This commit is contained in:
U-Daniel-PC\Daniel 2014-09-19 23:19:05 -04:00
commit dac95cb42b
31 changed files with 1709 additions and 1613 deletions

113
Makefile
View file

@ -1,12 +1,52 @@
PYTHON := python
MD5 := md5sum -c --quiet
# Build Red/Blue. Yellow is WIP.
roms := pokered.gbc pokeblue.gbc
.SUFFIXES:
.SUFFIXES: .asm .tx .o .gbc
.PHONY: all clean red blue yellow compare
.PRECIOUS: %.2bpp
all: $(roms)
red: pokered.gbc
blue: pokeblue.gbc
yellow: pokeyellow.gbc
versions := red blue yellow
# Header options for rgbfix.
dmg_opt = -jsv -k 01 -l 0x33 -m 0x13 -p 0 -r 03
cgb_opt = -cjsv -k 01 -l 0x33 -m 0x1b -p 0 -r 03
red_opt = $(dmg_opt) -t "POKEMON RED"
blue_opt = $(dmg_opt) -t "POKEMON BLUE"
yellow_opt = $(cgb_opt) -t "POKEMON YELLOW"
# If your default python is 3, you may want to change this to python27.
PYTHON := python
# md5sum -c is used to compare rom hashes. The options may vary across platforms.
MD5 := md5sum -c --quiet
# The compare target is a shortcut to check that the build matches the original roms exactly.
# This is for contributors to make sure a change didn't affect the contents of the rom.
# More thorough comparison can be made by diffing the output of hexdump -C against both roms.
compare:
@$(MD5) roms.md5
# Clear the default suffixes.
.SUFFIXES:
.SUFFIXES: .asm .tx .o .gbc .png .2bpp .1bpp .pic
# Secondary expansion is required for dependency variables in object rules.
.SECONDEXPANSION:
# Suppress annoying intermediate file deletion messages.
.PRECIOUS: %.2bpp
# Filepath shortcuts to avoid overly long recipes.
poketools := extras/pokemontools
gfx := $(PYTHON) $(poketools)/gfx.py
pic := $(PYTHON) $(poketools)/pic.py
@ -14,8 +54,9 @@ includes := $(PYTHON) $(poketools)/scan_includes.py
pre := $(PYTHON) prequeue.py
versions := red blue yellow
# Collect file dependencies for objects in red/, blue/ and yellow/.
# These aren't provided by rgbds by default, so we have to look for file includes ourselves.
$(foreach ver, $(versions), \
$(eval $(ver)_asm := $(shell find $(ver) -iname '*.asm')) \
$(eval $(ver)_obj := $($(ver)_asm:.asm=.o)) \
@ -26,25 +67,22 @@ $(foreach obj, $(all_obj), \
)
roms := pokered.gbc pokeblue.gbc
all: $(roms)
red: pokered.gbc
blue: pokeblue.gbc
yellow: pokeyellow.gbc
compare:
@$(MD5) roms.md5
clean:
rm -f $(roms) $(all_obj)
find . \( -iname '*.tx' -o -iname '*.1bpp' -o -iname '*.2bpp' -o -iname '*.pic' \) -exec rm {} +
# Image files are added to a queue to reduce build time. They're converted when building parent objects.
%.png: ;
%.2bpp: %.png ; $(eval 2bppq += $<) @rm -f $@
%.1bpp: %.png ; $(eval 1bppq += $<) @rm -f $@
%.pic: %.2bpp ; $(eval picq += $<) @rm -f $@
# Source files are not fed directly into rgbasm.
# A python preprocessor runs over them first, replacing ascii strings with correct character codes.
# It spits out the new file with extension .tx.
# The text preprocessor also uses a queue.
%.asm: ;
%.tx: %.asm
$(eval txq += $<)
@rm -f $@
%.tx: %.asm ; $(eval txq += $<) @rm -f $@
# Assemble source files into objects.
# Queue payloads are here. These are made silent since there may be hundreds of targets.
# Use rgbasm -h to use halts without nops.
$(all_obj): $$*.tx $$(patsubst %.asm, %.tx, $$($$*_dep))
@$(pre) $(txq); $(eval txq :=)
@$(gfx) 2bpp $(2bppq); $(eval 2bppq :=)
@ -53,29 +91,16 @@ $(all_obj): $$*.tx $$(patsubst %.asm, %.tx, $$($$*_dep))
rgbasm -h -o $@ $*.tx
link = rgblink -n $*.sym -m $*.map
dmg_opt := -jsv -k 01 -l 0x33 -m 0x13 -p 0 -r 03
cgb_opt := -cjsv -k 01 -l 0x33 -m 0x1b -p 0 -r 03
# Link objects together to build a rom.
pokered.gbc: $(red_obj)
# Make a symfile for debugging. rgblink will segfault if a mapfile isn't made too.
link = rgblink -n poke$*.sym -m poke$*.map
poke%.gbc: $$(%_obj)
$(link) -o $@ $^
rgbfix $(dmg_opt) -t "POKEMON RED" $@
pokeblue.gbc: $(blue_obj)
$(link) -o $@ $^
rgbfix $(dmg_opt) -t "POKEMON BLUE" $@
pokeyellow.gbc: $(yellow_obj)
$(link) -o $@ $^
rgbfix $(cgb_opt) -t "POKEMON YELLOW" $@
rgbfix $($*_opt) $@
%.2bpp: %.png
$(eval 2bppq += $<)
@rm -f $@
%.1bpp: %.png
$(eval 1bppq += $<)
@rm -f $@
%.pic: %.2bpp
$(eval picq += $<)
@rm -f $@
clean:
rm -f $(roms) $(all_obj)
find . \( -iname '*.tx' -o -iname '*.1bpp' -o -iname '*.2bpp' -o -iname '*.pic' \) -exec rm {} +

View file

@ -1,12 +1,3 @@
A_BUTTON EQU %00000001
B_BUTTON EQU %00000010
SELECT EQU %00000100
START EQU %00001000
D_RIGHT EQU %00010000
D_LEFT EQU %00100000
D_UP EQU %01000000
D_DOWN EQU %10000000
MAX_LEVEL EQU 100
NUM_MOVES EQU 4
@ -18,3 +9,16 @@ NUM_BOXES EQU 12
HOF_MON EQU $10
HOF_TEAM EQU PARTY_LENGTH * HOF_MON
NUM_HOF_TEAMS EQU 50
A_BUTTON EQU %00000001
B_BUTTON EQU %00000010
SELECT EQU %00000100
START EQU %00001000
D_RIGHT EQU %00010000
D_LEFT EQU %00100000
D_UP EQU %01000000
D_DOWN EQU %10000000
SCREEN_WIDTH EQU 20
SCREEN_HEIGHT EQU 18

View file

@ -1,184 +1,210 @@
NUM_ATTACKS EQU $A4
const_value = 1
POUND EQU $01
KARATE_CHOP EQU $02
DOUBLESLAP EQU $03
COMET_PUNCH EQU $04
MEGA_PUNCH EQU $05
PAY_DAY EQU $06
FIRE_PUNCH EQU $07
ICE_PUNCH EQU $08
THUNDERPUNCH EQU $09
SCRATCH EQU $0A
VICEGRIP EQU $0B
GUILLOTINE EQU $0C
RAZOR_WIND EQU $0D
SWORDS_DANCE EQU $0E
CUT EQU $0F
GUST EQU $10
WING_ATTACK EQU $11
WHIRLWIND EQU $12
FLY EQU $13
BIND EQU $14
SLAM EQU $15
VINE_WHIP EQU $16
STOMP EQU $17
DOUBLE_KICK EQU $18
MEGA_KICK EQU $19
JUMP_KICK EQU $1A
ROLLING_KICK EQU $1B
SAND_ATTACK EQU $1C
HEADBUTT EQU $1D
HORN_ATTACK EQU $1E
FURY_ATTACK EQU $1F
HORN_DRILL EQU $20
TACKLE EQU $21
BODY_SLAM EQU $22
WRAP EQU $23
TAKE_DOWN EQU $24
THRASH EQU $25
DOUBLE_EDGE EQU $26
TAIL_WHIP EQU $27
POISON_STING EQU $28
TWINEEDLE EQU $29
PIN_MISSILE EQU $2A
LEER EQU $2B
BITE EQU $2C
GROWL EQU $2D
ROAR EQU $2E
SING EQU $2F
SUPERSONIC EQU $30
SONICBOOM EQU $31
DISABLE EQU $32
ACID EQU $33
EMBER EQU $34
FLAMETHROWER EQU $35
MIST EQU $36
WATER_GUN EQU $37
HYDRO_PUMP EQU $38
SURF EQU $39
ICE_BEAM EQU $3A
BLIZZARD EQU $3B
PSYBEAM EQU $3C
BUBBLEBEAM EQU $3D
AURORA_BEAM EQU $3E
HYPER_BEAM EQU $3F
PECK EQU $40
DRILL_PECK EQU $41
SUBMISSION EQU $42
LOW_KICK EQU $43
COUNTER EQU $44
SEISMIC_TOSS EQU $45
STRENGTH EQU $46
ABSORB EQU $47
MEGA_DRAIN EQU $48
LEECH_SEED EQU $49
GROWTH EQU $4A
RAZOR_LEAF EQU $4B
SOLARBEAM EQU $4C
POISONPOWDER EQU $4D
STUN_SPORE EQU $4E
SLEEP_POWDER EQU $4F
PETAL_DANCE EQU $50
STRING_SHOT EQU $51
DRAGON_RAGE EQU $52
FIRE_SPIN EQU $53
THUNDERSHOCK EQU $54
THUNDERBOLT EQU $55
THUNDER_WAVE EQU $56
THUNDER EQU $57
ROCK_THROW EQU $58
EARTHQUAKE EQU $59
FISSURE EQU $5A
DIG EQU $5B
TOXIC EQU $5C
CONFUSION EQU $5D
PSYCHIC_M EQU $5E
HYPNOSIS EQU $5F
MEDITATE EQU $60
AGILITY EQU $61
QUICK_ATTACK EQU $62
RAGE EQU $63
TELEPORT EQU $64
NIGHT_SHADE EQU $65
MIMIC EQU $66
SCREECH EQU $67
DOUBLE_TEAM EQU $68
RECOVER EQU $69
HARDEN EQU $6A
MINIMIZE EQU $6B
SMOKESCREEN EQU $6C
CONFUSE_RAY EQU $6D
WITHDRAW EQU $6E
DEFENSE_CURL EQU $6F
BARRIER EQU $70
LIGHT_SCREEN EQU $71
HAZE EQU $72
REFLECT EQU $73
FOCUS_ENERGY EQU $74
BIDE EQU $75
METRONOME EQU $76
MIRROR_MOVE EQU $77
SELFDESTRUCT EQU $78
EGG_BOMB EQU $79
LICK EQU $7A
SMOG EQU $7B
SLUDGE EQU $7C
BONE_CLUB EQU $7D
FIRE_BLAST EQU $7E
WATERFALL EQU $7F
CLAMP EQU $80
SWIFT EQU $81
SKULL_BASH EQU $82
SPIKE_CANNON EQU $83
CONSTRICT EQU $84
AMNESIA EQU $85
KINESIS EQU $86
SOFTBOILED EQU $87
HI_JUMP_KICK EQU $88
GLARE EQU $89
DREAM_EATER EQU $8A
POISON_GAS EQU $8B
BARRAGE EQU $8C
LEECH_LIFE EQU $8D
LOVELY_KISS EQU $8E
SKY_ATTACK EQU $8F
TRANSFORM EQU $90
BUBBLE EQU $91
DIZZY_PUNCH EQU $92
SPORE EQU $93
FLASH EQU $94
PSYWAVE EQU $95
SPLASH EQU $96
ACID_ARMOR EQU $97
CRABHAMMER EQU $98
EXPLOSION EQU $99
FURY_SWIPES EQU $9A
BONEMERANG EQU $9B
REST EQU $9C
ROCK_SLIDE EQU $9D
HYPER_FANG EQU $9E
SHARPEN EQU $9F
CONVERSION EQU $A0
TRI_ATTACK EQU $A1
SUPER_FANG EQU $A2
SLASH EQU $A3
SUBSTITUTE EQU $A4
STRUGGLE EQU $A5
const POUND
const KARATE_CHOP
const DOUBLESLAP
const COMET_PUNCH
const MEGA_PUNCH
const PAY_DAY
const FIRE_PUNCH
const ICE_PUNCH
const THUNDERPUNCH
const SCRATCH
const VICEGRIP
const GUILLOTINE
const RAZOR_WIND
const SWORDS_DANCE
const CUT
const GUST
const WING_ATTACK
const WHIRLWIND
const FLY
const BIND
const SLAM
const VINE_WHIP
const STOMP
const DOUBLE_KICK
const MEGA_KICK
const JUMP_KICK
const ROLLING_KICK
const SAND_ATTACK
const HEADBUTT
const HORN_ATTACK
const FURY_ATTACK
const HORN_DRILL
const TACKLE
const BODY_SLAM
const WRAP
const TAKE_DOWN
const THRASH
const DOUBLE_EDGE
const TAIL_WHIP
const POISON_STING
const TWINEEDLE
const PIN_MISSILE
const LEER
const BITE
const GROWL
const ROAR
const SING
const SUPERSONIC
const SONICBOOM
const DISABLE
const ACID
const EMBER
const FLAMETHROWER
const MIST
const WATER_GUN
const HYDRO_PUMP
const SURF
const ICE_BEAM
const BLIZZARD
const PSYBEAM
const BUBBLEBEAM
const AURORA_BEAM
const HYPER_BEAM
const PECK
const DRILL_PECK
const SUBMISSION
const LOW_KICK
const COUNTER
const SEISMIC_TOSS
const STRENGTH
const ABSORB
const MEGA_DRAIN
const LEECH_SEED
const GROWTH
const RAZOR_LEAF
const SOLARBEAM
const POISONPOWDER
const STUN_SPORE
const SLEEP_POWDER
const PETAL_DANCE
const STRING_SHOT
const DRAGON_RAGE
const FIRE_SPIN
const THUNDERSHOCK
const THUNDERBOLT
const THUNDER_WAVE
const THUNDER
const ROCK_THROW
const EARTHQUAKE
const FISSURE
const DIG
const TOXIC
const CONFUSION
const PSYCHIC_M
const HYPNOSIS
const MEDITATE
const AGILITY
const QUICK_ATTACK
const RAGE
const TELEPORT
const NIGHT_SHADE
const MIMIC
const SCREECH
const DOUBLE_TEAM
const RECOVER
const HARDEN
const MINIMIZE
const SMOKESCREEN
const CONFUSE_RAY
const WITHDRAW
const DEFENSE_CURL
const BARRIER
const LIGHT_SCREEN
const HAZE
const REFLECT
const FOCUS_ENERGY
const BIDE
const METRONOME
const MIRROR_MOVE
const SELFDESTRUCT
const EGG_BOMB
const LICK
const SMOG
const SLUDGE
const BONE_CLUB
const FIRE_BLAST
const WATERFALL
const CLAMP
const SWIFT
const SKULL_BASH
const SPIKE_CANNON
const CONSTRICT
const AMNESIA
const KINESIS
const SOFTBOILED
const HI_JUMP_KICK
const GLARE
const DREAM_EATER
const POISON_GAS
const BARRAGE
const LEECH_LIFE
const LOVELY_KISS
const SKY_ATTACK
const TRANSFORM
const BUBBLE
const DIZZY_PUNCH
const SPORE
const FLASH
const PSYWAVE
const SPLASH
const ACID_ARMOR
const CRABHAMMER
const EXPLOSION
const FURY_SWIPES
const BONEMERANG
const REST
const ROCK_SLIDE
const HYPER_FANG
const SHARPEN
const CONVERSION
const TRI_ATTACK
const SUPER_FANG
const SLASH
const SUBSTITUTE
; these do double duty as animation identifiers
SHOWPIC_ANIM EQU $A6 ; redraw monster pic
STATUS_AFFECTED_ANIM EQU $A7 ; effect when monster receives a status aliment
XSTATITEM_ANIM EQU $AE ; use X Attack/Defense/Speed/Special
BURN_PSN_ANIM EQU $BA ; Plays when a monster is burned or poisoned
SLP_ANIM EQU $BD ; sleeping monster
CONF_ANIM EQU $BF ; confused monster
TOSS_ANIM EQU $C1 ; toss Poké Ball
SHAKE_ANIM EQU $C2 ; shaking Poké Ball when catching monster
POOF_ANIM EQU $C3 ; puff of smoke
BLOCKBALL_ANIM EQU $C4 ; trainer knocks away Poké Ball
GREATTOSS_ANIM EQU $C5 ; toss Great Ball
ULTRATOSS_ANIM EQU $C6 ; toss Ultra Ball or Master Ball
HIDEPIC_ANIM EQU $C8 ; monster disappears
ROCK_ANIM EQU $C9 ; throw rock
BAIT_ANIM EQU $CA ; throw bait
NUM_ATTACKS EQU const_value + -1
const STRUGGLE
; Moves do double duty as animation identifiers.
const SHOWPIC_ANIM
const STATUS_AFFECTED_ANIM
const ANIM_A8
const ANIM_A9
const ANIM_AA
const ANIM_AB
const ANIM_AC
const ANIM_AD
const XSTATITEM_ANIM ; use X Attack/Defense/Speed/Special
const ANIM_AF
const ANIM_B0
const ANIM_B1
const ANIM_B2
const ANIM_B3
const ANIM_B4
const ANIM_B5
const ANIM_B6
const ANIM_B7
const ANIM_B8
const ANIM_B9
const BURN_PSN_ANIM ; Plays when a monster is burned or poisoned
const ANIM_BB
const ANIM_BC
const SLP_ANIM ; sleeping monster
const ANIM_BE
const CONF_ANIM ; confused monster
const ANIM_C0
const TOSS_ANIM ; toss Poké Ball
const SHAKE_ANIM ; shaking Poké Ball when catching monster
const POOF_ANIM ; puff of smoke
const BLOCKBALL_ANIM ; trainer knocks away Poké Ball
const GREATTOSS_ANIM ; toss Great Ball
const ULTRATOSS_ANIM ; toss Ultra Ball or Master Ball
const ANIM_C7
const HIDEPIC_ANIM ; monster disappears
const ROCK_ANIM ; throw rock
const BAIT_ANIM ; throw bait

View file

@ -1,168 +1,177 @@
Moves: ; 38000 (e:4000)
; characteristics of each move
; animation, effect, power, type, accuracy, PP
db POUND ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35
db KARATE_CHOP ,NO_ADDITIONAL_EFFECT ,$32,NORMAL, $FF,25
db DOUBLESLAP ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,10
db COMET_PUNCH ,TWO_TO_FIVE_ATTACKS_EFFECT,$12,NORMAL, $D8,15
db MEGA_PUNCH ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $D8,20
db PAY_DAY ,PAY_DAY_EFFECT ,$28,NORMAL, $FF,20
db FIRE_PUNCH ,BURN_SIDE_EFFECT1 ,$4B,FIRE, $FF,15
db ICE_PUNCH ,FREEZE_SIDE_EFFECT ,$4B,ICE, $FF,15
db THUNDERPUNCH,PARALYZE_SIDE_EFFECT1 ,$4B,ELECTRIC,$FF,15
db SCRATCH ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35
db VICEGRIP ,NO_ADDITIONAL_EFFECT ,$37,NORMAL, $FF,30
db GUILLOTINE ,OHKO_EFFECT ,$01,NORMAL, $4C,5
db RAZOR_WIND ,CHARGE_EFFECT ,$50,NORMAL, $BF,10
db SWORDS_DANCE,ATTACK_UP2_EFFECT ,$00,NORMAL, $FF,30
db CUT ,NO_ADDITIONAL_EFFECT ,$32,NORMAL, $F2,30
db GUST ,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,35
db WING_ATTACK ,NO_ADDITIONAL_EFFECT ,$23,FLYING, $FF,35
db WHIRLWIND ,SWITCH_AND_TELEPORT_EFFECT,$00,NORMAL, $D8,20
db FLY ,FLY_EFFECT ,$46,FLYING, $F2,15
db BIND ,TRAPPING_EFFECT ,$0F,NORMAL, $BF,20
db SLAM ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $BF,20
db VINE_WHIP ,NO_ADDITIONAL_EFFECT ,$23,GRASS, $FF,10
db STOMP ,FLINCH_SIDE_EFFECT2 ,$41,NORMAL, $FF,20
db DOUBLE_KICK ,ATTACK_TWICE_EFFECT ,$1E,FIGHTING,$FF,30
db MEGA_KICK ,NO_ADDITIONAL_EFFECT ,$78,NORMAL, $BF,5
db JUMP_KICK ,JUMP_KICK_EFFECT ,$46,FIGHTING,$F2,25
db ROLLING_KICK,FLINCH_SIDE_EFFECT2 ,$3C,FIGHTING,$D8,15
db SAND_ATTACK ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $FF,15
db HEADBUTT ,FLINCH_SIDE_EFFECT2 ,$46,NORMAL, $FF,15
db HORN_ATTACK ,NO_ADDITIONAL_EFFECT ,$41,NORMAL, $FF,25
db FURY_ATTACK ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,20
db HORN_DRILL ,OHKO_EFFECT ,$01,NORMAL, $4C,5
db TACKLE ,NO_ADDITIONAL_EFFECT ,$23,NORMAL, $F2,35
db BODY_SLAM ,PARALYZE_SIDE_EFFECT2 ,$55,NORMAL, $FF,15
db WRAP ,TRAPPING_EFFECT ,$0F,NORMAL, $D8,20
db TAKE_DOWN ,RECOIL_EFFECT ,$5A,NORMAL, $D8,20
db THRASH ,THRASH_PETAL_DANCE_EFFECT ,$5A,NORMAL, $FF,20
db DOUBLE_EDGE ,RECOIL_EFFECT ,$64,NORMAL, $FF,15
db TAIL_WHIP ,DEFENSE_DOWN1_EFFECT ,$00,NORMAL, $FF,30
db POISON_STING,POISON_SIDE_EFFECT1 ,$0F,POISON, $FF,35
db TWINEEDLE ,TWINEEDLE_EFFECT ,$19,BUG, $FF,20
db PIN_MISSILE ,TWO_TO_FIVE_ATTACKS_EFFECT,$0E,BUG, $D8,20
db LEER ,DEFENSE_DOWN1_EFFECT ,$00,NORMAL, $FF,30
db BITE ,FLINCH_SIDE_EFFECT1 ,$3C,NORMAL, $FF,25
db GROWL ,ATTACK_DOWN1_EFFECT ,$00,NORMAL, $FF,40
db ROAR ,SWITCH_AND_TELEPORT_EFFECT,$00,NORMAL, $FF,20
db SING ,SLEEP_EFFECT ,$00,NORMAL, $8C,15
db SUPERSONIC ,CONFUSION_EFFECT ,$00,NORMAL, $8C,20
db SONICBOOM ,SPECIAL_DAMAGE_EFFECT ,$01,NORMAL, $E5,20
db DISABLE ,DISABLE_EFFECT ,$00,NORMAL, $8C,20
db ACID ,DEFENSE_DOWN_SIDE_EFFECT ,$28,POISON, $FF,30
db EMBER ,BURN_SIDE_EFFECT1 ,$28,FIRE, $FF,25
db FLAMETHROWER,BURN_SIDE_EFFECT1 ,$5F,FIRE, $FF,15
db MIST ,MIST_EFFECT ,$00,ICE, $FF,30
db WATER_GUN ,NO_ADDITIONAL_EFFECT ,$28,WATER, $FF,25
db HYDRO_PUMP ,NO_ADDITIONAL_EFFECT ,$78,WATER, $CC,5
db SURF ,NO_ADDITIONAL_EFFECT ,$5F,WATER, $FF,15
db ICE_BEAM ,FREEZE_SIDE_EFFECT ,$5F,ICE, $FF,10
db BLIZZARD ,FREEZE_SIDE_EFFECT ,$78,ICE, $E5,5
db PSYBEAM ,CONFUSION_SIDE_EFFECT ,$41,PSYCHIC, $FF,20
db BUBBLEBEAM ,SPEED_DOWN_SIDE_EFFECT ,$41,WATER, $FF,20
db AURORA_BEAM ,ATTACK_DOWN_SIDE_EFFECT ,$41,ICE, $FF,20
db HYPER_BEAM ,HYPER_BEAM_EFFECT ,$96,NORMAL, $E5,5
db PECK ,NO_ADDITIONAL_EFFECT ,$23,FLYING, $FF,35
db DRILL_PECK ,NO_ADDITIONAL_EFFECT ,$50,FLYING, $FF,20
db SUBMISSION ,RECOIL_EFFECT ,$50,FIGHTING,$CC,25
db LOW_KICK ,FLINCH_SIDE_EFFECT2 ,$32,FIGHTING,$E5,20
db COUNTER ,NO_ADDITIONAL_EFFECT ,$01,FIGHTING,$FF,20
db SEISMIC_TOSS,SPECIAL_DAMAGE_EFFECT ,$01,FIGHTING,$FF,20
db STRENGTH ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $FF,15
db ABSORB ,DRAIN_HP_EFFECT ,$14,GRASS, $FF,20
db MEGA_DRAIN ,DRAIN_HP_EFFECT ,$28,GRASS, $FF,10
db LEECH_SEED ,LEECH_SEED_EFFECT ,$00,GRASS, $E5,10
db GROWTH ,SPECIAL_UP1_EFFECT ,$00,NORMAL, $FF,40
db RAZOR_LEAF ,NO_ADDITIONAL_EFFECT ,$37,GRASS, $F2,25
db SOLARBEAM ,CHARGE_EFFECT ,$78,GRASS, $FF,10
db POISONPOWDER,POISON_EFFECT ,$00,POISON, $BF,35
db STUN_SPORE ,PARALYZE_EFFECT ,$00,GRASS, $BF,30
db SLEEP_POWDER,SLEEP_EFFECT ,$00,GRASS, $BF,15
db PETAL_DANCE ,THRASH_PETAL_DANCE_EFFECT ,$46,GRASS, $FF,20
db STRING_SHOT ,SPEED_DOWN1_EFFECT ,$00,BUG, $F2,40
db DRAGON_RAGE ,SPECIAL_DAMAGE_EFFECT ,$01,DRAGON, $FF,10
db FIRE_SPIN ,TRAPPING_EFFECT ,$0F,FIRE, $B2,15
db THUNDERSHOCK,PARALYZE_SIDE_EFFECT1 ,$28,ELECTRIC,$FF,30
db THUNDERBOLT ,PARALYZE_SIDE_EFFECT1 ,$5F,ELECTRIC,$FF,15
db THUNDER_WAVE,PARALYZE_EFFECT ,$00,ELECTRIC,$FF,20
db THUNDER ,PARALYZE_SIDE_EFFECT1 ,$78,ELECTRIC,$B2,10
db ROCK_THROW ,NO_ADDITIONAL_EFFECT ,$32,ROCK, $A5,15
db EARTHQUAKE ,NO_ADDITIONAL_EFFECT ,$64,GROUND, $FF,10
db FISSURE ,OHKO_EFFECT ,$01,GROUND, $4C,5
db DIG ,CHARGE_EFFECT ,$64,GROUND, $FF,10
db TOXIC ,POISON_EFFECT ,$00,POISON, $D8,10
db CONFUSION ,CONFUSION_SIDE_EFFECT ,$32,PSYCHIC, $FF,25
db PSYCHIC_M ,SPECIAL_DOWN_SIDE_EFFECT ,$5A,PSYCHIC, $FF,10
db HYPNOSIS ,SLEEP_EFFECT ,$00,PSYCHIC, $99,20
db MEDITATE ,ATTACK_UP1_EFFECT ,$00,PSYCHIC, $FF,40
db AGILITY ,SPEED_UP2_EFFECT ,$00,PSYCHIC, $FF,30
db QUICK_ATTACK,NO_ADDITIONAL_EFFECT ,$28,NORMAL, $FF,30
db RAGE ,RAGE_EFFECT ,$14,NORMAL, $FF,20
db TELEPORT ,SWITCH_AND_TELEPORT_EFFECT,$00,PSYCHIC, $FF,20
db NIGHT_SHADE ,SPECIAL_DAMAGE_EFFECT ,$00,GHOST, $FF,15
db MIMIC ,MIMIC_EFFECT ,$00,NORMAL, $FF,10
db SCREECH ,DEFENSE_DOWN2_EFFECT ,$00,NORMAL, $D8,40
db DOUBLE_TEAM ,EVASION_UP1_EFFECT ,$00,NORMAL, $FF,15
db RECOVER ,HEAL_EFFECT ,$00,NORMAL, $FF,20
db HARDEN ,DEFENSE_UP1_EFFECT ,$00,NORMAL, $FF,30
db MINIMIZE ,EVASION_UP1_EFFECT ,$00,NORMAL, $FF,20
db SMOKESCREEN ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $FF,20
db CONFUSE_RAY ,CONFUSION_EFFECT ,$00,GHOST, $FF,10
db WITHDRAW ,DEFENSE_UP1_EFFECT ,$00,WATER, $FF,40
db DEFENSE_CURL,DEFENSE_UP1_EFFECT ,$00,NORMAL, $FF,40
db BARRIER ,DEFENSE_UP2_EFFECT ,$00,PSYCHIC, $FF,30
db LIGHT_SCREEN,LIGHT_SCREEN_EFFECT ,$00,PSYCHIC, $FF,30
db HAZE ,HAZE_EFFECT ,$00,ICE, $FF,30
db REFLECT ,REFLECT_EFFECT ,$00,PSYCHIC, $FF,20
db FOCUS_ENERGY,FOCUS_ENERGY_EFFECT ,$00,NORMAL, $FF,30
db BIDE ,BIDE_EFFECT ,$00,NORMAL, $FF,10
db METRONOME ,METRONOME_EFFECT ,$00,NORMAL, $FF,10
db MIRROR_MOVE ,MIRROR_MOVE_EFFECT ,$00,FLYING, $FF,20
db SELFDESTRUCT,EXPLODE_EFFECT ,$82,NORMAL, $FF,5
db EGG_BOMB ,NO_ADDITIONAL_EFFECT ,$64,NORMAL, $BF,10
db LICK ,PARALYZE_SIDE_EFFECT2 ,$14,GHOST, $FF,30
db SMOG ,POISON_SIDE_EFFECT2 ,$14,POISON, $B2,20
db SLUDGE ,POISON_SIDE_EFFECT2 ,$41,POISON, $FF,20
db BONE_CLUB ,FLINCH_SIDE_EFFECT1 ,$41,GROUND, $D8,20
db FIRE_BLAST ,BURN_SIDE_EFFECT2 ,$78,FIRE, $D8,5
db WATERFALL ,NO_ADDITIONAL_EFFECT ,$50,WATER, $FF,15
db CLAMP ,TRAPPING_EFFECT ,$23,WATER, $BF,10
db SWIFT ,SWIFT_EFFECT ,$3C,NORMAL, $FF,20
db SKULL_BASH ,CHARGE_EFFECT ,$64,NORMAL, $FF,15
db SPIKE_CANNON,TWO_TO_FIVE_ATTACKS_EFFECT,$14,NORMAL, $FF,15
db CONSTRICT ,SPEED_DOWN_SIDE_EFFECT ,$0A,NORMAL, $FF,35
db AMNESIA ,SPECIAL_UP2_EFFECT ,$00,PSYCHIC, $FF,20
db KINESIS ,ACCURACY_DOWN1_EFFECT ,$00,PSYCHIC, $CC,15
db SOFTBOILED ,HEAL_EFFECT ,$00,NORMAL, $FF,10
db HI_JUMP_KICK,JUMP_KICK_EFFECT ,$55,FIGHTING,$E5,20
db GLARE ,PARALYZE_EFFECT ,$00,NORMAL, $BF,30
db DREAM_EATER ,DREAM_EATER_EFFECT ,$64,PSYCHIC, $FF,15
db POISON_GAS ,POISON_EFFECT ,$00,POISON, $8C,40
db BARRAGE ,TWO_TO_FIVE_ATTACKS_EFFECT,$0F,NORMAL, $D8,20
db LEECH_LIFE ,DRAIN_HP_EFFECT ,$14,BUG, $FF,15
db LOVELY_KISS ,SLEEP_EFFECT ,$00,NORMAL, $BF,10
db SKY_ATTACK ,CHARGE_EFFECT ,$8C,FLYING, $E5,5
db TRANSFORM ,TRANSFORM_EFFECT ,$00,NORMAL, $FF,10
db BUBBLE ,SPEED_DOWN_SIDE_EFFECT ,$14,WATER, $FF,30
db DIZZY_PUNCH ,NO_ADDITIONAL_EFFECT ,$46,NORMAL, $FF,10
db SPORE ,SLEEP_EFFECT ,$00,GRASS, $FF,15
db FLASH ,ACCURACY_DOWN1_EFFECT ,$00,NORMAL, $B2,20
db PSYWAVE ,SPECIAL_DAMAGE_EFFECT ,$01,PSYCHIC, $CC,15
db SPLASH ,SPLASH_EFFECT ,$00,NORMAL, $FF,40
db ACID_ARMOR ,DEFENSE_UP2_EFFECT ,$00,POISON, $FF,40
db CRABHAMMER ,NO_ADDITIONAL_EFFECT ,$5A,WATER, $D8,10
db EXPLOSION ,EXPLODE_EFFECT ,$AA,NORMAL, $FF,5
db FURY_SWIPES ,TWO_TO_FIVE_ATTACKS_EFFECT,$12,NORMAL, $CC,15
db BONEMERANG ,ATTACK_TWICE_EFFECT ,$32,GROUND, $E5,10
db REST ,HEAL_EFFECT ,$00,PSYCHIC, $FF,10
db ROCK_SLIDE ,NO_ADDITIONAL_EFFECT ,$4B,ROCK, $E5,10
db HYPER_FANG ,FLINCH_SIDE_EFFECT1 ,$50,NORMAL, $E5,15
db SHARPEN ,ATTACK_UP1_EFFECT ,$00,NORMAL, $FF,30
db CONVERSION ,CONVERSION_EFFECT ,$00,NORMAL, $FF,30
db TRI_ATTACK ,NO_ADDITIONAL_EFFECT ,$50,NORMAL, $FF,10
db SUPER_FANG ,SUPER_FANG_EFFECT ,$01,NORMAL, $E5,10
db SLASH ,NO_ADDITIONAL_EFFECT ,$46,NORMAL, $FF,20
db SUBSTITUTE ,SUBSTITUTE_EFFECT ,$00,NORMAL, $FF,10
db STRUGGLE ,RECOIL_EFFECT ,$32,NORMAL, $FF,10
Moves:
; Characteristics of each move.
move: macro
db \1 ; animation (interchangeable with move id)
db \2 ; effect
db \3 ; power
db \4 ; type
db \5 percent ; accuracy
db \6 ; pp
endm
move POUND, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35
move KARATE_CHOP, NO_ADDITIONAL_EFFECT, 50, NORMAL, 100, 25
move DOUBLESLAP, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 10
move COMET_PUNCH, TWO_TO_FIVE_ATTACKS_EFFECT, 18, NORMAL, 85, 15
move MEGA_PUNCH, NO_ADDITIONAL_EFFECT, 80, NORMAL, 85, 20
move PAY_DAY, PAY_DAY_EFFECT, 40, NORMAL, 100, 20
move FIRE_PUNCH, BURN_SIDE_EFFECT1, 75, FIRE, 100, 15
move ICE_PUNCH, FREEZE_SIDE_EFFECT, 75, ICE, 100, 15
move THUNDERPUNCH, PARALYZE_SIDE_EFFECT1, 75, ELECTRIC, 100, 15
move SCRATCH, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35
move VICEGRIP, NO_ADDITIONAL_EFFECT, 55, NORMAL, 100, 30
move GUILLOTINE, OHKO_EFFECT, 1, NORMAL, 30, 5
move RAZOR_WIND, CHARGE_EFFECT, 80, NORMAL, 75, 10
move SWORDS_DANCE, ATTACK_UP2_EFFECT, 0, NORMAL, 100, 30
move CUT, NO_ADDITIONAL_EFFECT, 50, NORMAL, 95, 30
move GUST, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 35
move WING_ATTACK, NO_ADDITIONAL_EFFECT, 35, FLYING, 100, 35
move WHIRLWIND, SWITCH_AND_TELEPORT_EFFECT, 0, NORMAL, 85, 20
move FLY, FLY_EFFECT, 70, FLYING, 95, 15
move BIND, TRAPPING_EFFECT, 15, NORMAL, 75, 20
move SLAM, NO_ADDITIONAL_EFFECT, 80, NORMAL, 75, 20
move VINE_WHIP, NO_ADDITIONAL_EFFECT, 35, GRASS, 100, 10
move STOMP, FLINCH_SIDE_EFFECT2, 65, NORMAL, 100, 20
move DOUBLE_KICK, ATTACK_TWICE_EFFECT, 30, FIGHTING, 100, 30
move MEGA_KICK, NO_ADDITIONAL_EFFECT, 120, NORMAL, 75, 5
move JUMP_KICK, JUMP_KICK_EFFECT, 70, FIGHTING, 95, 25
move ROLLING_KICK, FLINCH_SIDE_EFFECT2, 60, FIGHTING, 85, 15
move SAND_ATTACK, ACCURACY_DOWN1_EFFECT, 0, NORMAL, 100, 15
move HEADBUTT, FLINCH_SIDE_EFFECT2, 70, NORMAL, 100, 15
move HORN_ATTACK, NO_ADDITIONAL_EFFECT, 65, NORMAL, 100, 25
move FURY_ATTACK, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 20
move HORN_DRILL, OHKO_EFFECT, 1, NORMAL, 30, 5
move TACKLE, NO_ADDITIONAL_EFFECT, 35, NORMAL, 95, 35
move BODY_SLAM, PARALYZE_SIDE_EFFECT2, 85, NORMAL, 100, 15
move WRAP, TRAPPING_EFFECT, 15, NORMAL, 85, 20
move TAKE_DOWN, RECOIL_EFFECT, 90, NORMAL, 85, 20
move THRASH, THRASH_PETAL_DANCE_EFFECT, 90, NORMAL, 100, 20
move DOUBLE_EDGE, RECOIL_EFFECT, 100, NORMAL, 100, 15
move TAIL_WHIP, DEFENSE_DOWN1_EFFECT, 0, NORMAL, 100, 30
move POISON_STING, POISON_SIDE_EFFECT1, 15, POISON, 100, 35
move TWINEEDLE, TWINEEDLE_EFFECT, 25, BUG, 100, 20
move PIN_MISSILE, TWO_TO_FIVE_ATTACKS_EFFECT, 14, BUG, 85, 20
move LEER, DEFENSE_DOWN1_EFFECT, 0, NORMAL, 100, 30
move BITE, FLINCH_SIDE_EFFECT1, 60, NORMAL, 100, 25
move GROWL, ATTACK_DOWN1_EFFECT, 0, NORMAL, 100, 40
move ROAR, SWITCH_AND_TELEPORT_EFFECT, 0, NORMAL, 100, 20
move SING, SLEEP_EFFECT, 0, NORMAL, 55, 15
move SUPERSONIC, CONFUSION_EFFECT, 0, NORMAL, 55, 20
move SONICBOOM, SPECIAL_DAMAGE_EFFECT, 1, NORMAL, 90, 20
move DISABLE, DISABLE_EFFECT, 0, NORMAL, 55, 20
move ACID, DEFENSE_DOWN_SIDE_EFFECT, 40, POISON, 100, 30
move EMBER, BURN_SIDE_EFFECT1, 40, FIRE, 100, 25
move FLAMETHROWER, BURN_SIDE_EFFECT1, 95, FIRE, 100, 15
move MIST, MIST_EFFECT, 0, ICE, 100, 30
move WATER_GUN, NO_ADDITIONAL_EFFECT, 40, WATER, 100, 25
move HYDRO_PUMP, NO_ADDITIONAL_EFFECT, 120, WATER, 80, 5
move SURF, NO_ADDITIONAL_EFFECT, 95, WATER, 100, 15
move ICE_BEAM, FREEZE_SIDE_EFFECT, 95, ICE, 100, 10
move BLIZZARD, FREEZE_SIDE_EFFECT, 120, ICE, 90, 5
move PSYBEAM, CONFUSION_SIDE_EFFECT, 65, PSYCHIC, 100, 20
move BUBBLEBEAM, SPEED_DOWN_SIDE_EFFECT, 65, WATER, 100, 20
move AURORA_BEAM, ATTACK_DOWN_SIDE_EFFECT, 65, ICE, 100, 20
move HYPER_BEAM, HYPER_BEAM_EFFECT, 150, NORMAL, 90, 5
move PECK, NO_ADDITIONAL_EFFECT, 35, FLYING, 100, 35
move DRILL_PECK, NO_ADDITIONAL_EFFECT, 80, FLYING, 100, 20
move SUBMISSION, RECOIL_EFFECT, 80, FIGHTING, 80, 25
move LOW_KICK, FLINCH_SIDE_EFFECT2, 50, FIGHTING, 90, 20
move COUNTER, NO_ADDITIONAL_EFFECT, 1, FIGHTING, 100, 20
move SEISMIC_TOSS, SPECIAL_DAMAGE_EFFECT, 1, FIGHTING, 100, 20
move STRENGTH, NO_ADDITIONAL_EFFECT, 80, NORMAL, 100, 15
move ABSORB, DRAIN_HP_EFFECT, 20, GRASS, 100, 20
move MEGA_DRAIN, DRAIN_HP_EFFECT, 40, GRASS, 100, 10
move LEECH_SEED, LEECH_SEED_EFFECT, 0, GRASS, 90, 10
move GROWTH, SPECIAL_UP1_EFFECT, 0, NORMAL, 100, 40
move RAZOR_LEAF, NO_ADDITIONAL_EFFECT, 55, GRASS, 95, 25
move SOLARBEAM, CHARGE_EFFECT, 120, GRASS, 100, 10
move POISONPOWDER, POISON_EFFECT, 0, POISON, 75, 35
move STUN_SPORE, PARALYZE_EFFECT, 0, GRASS, 75, 30
move SLEEP_POWDER, SLEEP_EFFECT, 0, GRASS, 75, 15
move PETAL_DANCE, THRASH_PETAL_DANCE_EFFECT, 70, GRASS, 100, 20
move STRING_SHOT, SPEED_DOWN1_EFFECT, 0, BUG, 95, 40
move DRAGON_RAGE, SPECIAL_DAMAGE_EFFECT, 1, DRAGON, 100, 10
move FIRE_SPIN, TRAPPING_EFFECT, 15, FIRE, 70, 15
move THUNDERSHOCK, PARALYZE_SIDE_EFFECT1, 40, ELECTRIC, 100, 30
move THUNDERBOLT, PARALYZE_SIDE_EFFECT1, 95, ELECTRIC, 100, 15
move THUNDER_WAVE, PARALYZE_EFFECT, 0, ELECTRIC, 100, 20
move THUNDER, PARALYZE_SIDE_EFFECT1, 120, ELECTRIC, 70, 10
move ROCK_THROW, NO_ADDITIONAL_EFFECT, 50, ROCK, 65, 15
move EARTHQUAKE, NO_ADDITIONAL_EFFECT, 100, GROUND, 100, 10
move FISSURE, OHKO_EFFECT, 1, GROUND, 30, 5
move DIG, CHARGE_EFFECT, 100, GROUND, 100, 10
move TOXIC, POISON_EFFECT, 0, POISON, 85, 10
move CONFUSION, CONFUSION_SIDE_EFFECT, 50, PSYCHIC, 100, 25
move PSYCHIC_M, SPECIAL_DOWN_SIDE_EFFECT, 90, PSYCHIC, 100, 10
move HYPNOSIS, SLEEP_EFFECT, 0, PSYCHIC, 60, 20
move MEDITATE, ATTACK_UP1_EFFECT, 0, PSYCHIC, 100, 40
move AGILITY, SPEED_UP2_EFFECT, 0, PSYCHIC, 100, 30
move QUICK_ATTACK, NO_ADDITIONAL_EFFECT, 40, NORMAL, 100, 30
move RAGE, RAGE_EFFECT, 20, NORMAL, 100, 20
move TELEPORT, SWITCH_AND_TELEPORT_EFFECT, 0, PSYCHIC, 100, 20
move NIGHT_SHADE, SPECIAL_DAMAGE_EFFECT, 0, GHOST, 100, 15
move MIMIC, MIMIC_EFFECT, 0, NORMAL, 100, 10
move SCREECH, DEFENSE_DOWN2_EFFECT, 0, NORMAL, 85, 40
move DOUBLE_TEAM, EVASION_UP1_EFFECT, 0, NORMAL, 100, 15
move RECOVER, HEAL_EFFECT, 0, NORMAL, 100, 20
move HARDEN, DEFENSE_UP1_EFFECT, 0, NORMAL, 100, 30
move MINIMIZE, EVASION_UP1_EFFECT, 0, NORMAL, 100, 20
move SMOKESCREEN, ACCURACY_DOWN1_EFFECT, 0, NORMAL, 100, 20
move CONFUSE_RAY, CONFUSION_EFFECT, 0, GHOST, 100, 10
move WITHDRAW, DEFENSE_UP1_EFFECT, 0, WATER, 100, 40
move DEFENSE_CURL, DEFENSE_UP1_EFFECT, 0, NORMAL, 100, 40
move BARRIER, DEFENSE_UP2_EFFECT, 0, PSYCHIC, 100, 30
move LIGHT_SCREEN, LIGHT_SCREEN_EFFECT, 0, PSYCHIC, 100, 30
move HAZE, HAZE_EFFECT, 0, ICE, 100, 30
move REFLECT, REFLECT_EFFECT, 0, PSYCHIC, 100, 20
move FOCUS_ENERGY, FOCUS_ENERGY_EFFECT, 0, NORMAL, 100, 30
move BIDE, BIDE_EFFECT, 0, NORMAL, 100, 10
move METRONOME, METRONOME_EFFECT, 0, NORMAL, 100, 10
move MIRROR_MOVE, MIRROR_MOVE_EFFECT, 0, FLYING, 100, 20
move SELFDESTRUCT, EXPLODE_EFFECT, 130, NORMAL, 100, 5
move EGG_BOMB, NO_ADDITIONAL_EFFECT, 100, NORMAL, 75, 10
move LICK, PARALYZE_SIDE_EFFECT2, 20, GHOST, 100, 30
move SMOG, POISON_SIDE_EFFECT2, 20, POISON, 70, 20
move SLUDGE, POISON_SIDE_EFFECT2, 65, POISON, 100, 20
move BONE_CLUB, FLINCH_SIDE_EFFECT1, 65, GROUND, 85, 20
move FIRE_BLAST, BURN_SIDE_EFFECT2, 120, FIRE, 85, 5
move WATERFALL, NO_ADDITIONAL_EFFECT, 80, WATER, 100, 15
move CLAMP, TRAPPING_EFFECT, 35, WATER, 75, 10
move SWIFT, SWIFT_EFFECT, 60, NORMAL, 100, 20
move SKULL_BASH, CHARGE_EFFECT, 100, NORMAL, 100, 15
move SPIKE_CANNON, TWO_TO_FIVE_ATTACKS_EFFECT, 20, NORMAL, 100, 15
move CONSTRICT, SPEED_DOWN_SIDE_EFFECT, 10, NORMAL, 100, 35
move AMNESIA, SPECIAL_UP2_EFFECT, 0, PSYCHIC, 100, 20
move KINESIS, ACCURACY_DOWN1_EFFECT, 0, PSYCHIC, 80, 15
move SOFTBOILED, HEAL_EFFECT, 0, NORMAL, 100, 10
move HI_JUMP_KICK, JUMP_KICK_EFFECT, 85, FIGHTING, 90, 20
move GLARE, PARALYZE_EFFECT, 0, NORMAL, 75, 30
move DREAM_EATER, DREAM_EATER_EFFECT, 100, PSYCHIC, 100, 15
move POISON_GAS, POISON_EFFECT, 0, POISON, 55, 40
move BARRAGE, TWO_TO_FIVE_ATTACKS_EFFECT, 15, NORMAL, 85, 20
move LEECH_LIFE, DRAIN_HP_EFFECT, 20, BUG, 100, 15
move LOVELY_KISS, SLEEP_EFFECT, 0, NORMAL, 75, 10
move SKY_ATTACK, CHARGE_EFFECT, 140, FLYING, 90, 5
move TRANSFORM, TRANSFORM_EFFECT, 0, NORMAL, 100, 10
move BUBBLE, SPEED_DOWN_SIDE_EFFECT, 20, WATER, 100, 30
move DIZZY_PUNCH, NO_ADDITIONAL_EFFECT, 70, NORMAL, 100, 10
move SPORE, SLEEP_EFFECT, 0, GRASS, 100, 15
move FLASH, ACCURACY_DOWN1_EFFECT, 0, NORMAL, 70, 20
move PSYWAVE, SPECIAL_DAMAGE_EFFECT, 1, PSYCHIC, 80, 15
move SPLASH, SPLASH_EFFECT, 0, NORMAL, 100, 40
move ACID_ARMOR, DEFENSE_UP2_EFFECT, 0, POISON, 100, 40
move CRABHAMMER, NO_ADDITIONAL_EFFECT, 90, WATER, 85, 10
move EXPLOSION, EXPLODE_EFFECT, 170, NORMAL, 100, 5
move FURY_SWIPES, TWO_TO_FIVE_ATTACKS_EFFECT, 18, NORMAL, 80, 15
move BONEMERANG, ATTACK_TWICE_EFFECT, 50, GROUND, 90, 10
move REST, HEAL_EFFECT, 0, PSYCHIC, 100, 10
move ROCK_SLIDE, NO_ADDITIONAL_EFFECT, 75, ROCK, 90, 10
move HYPER_FANG, FLINCH_SIDE_EFFECT1, 80, NORMAL, 90, 15
move SHARPEN, ATTACK_UP1_EFFECT, 0, NORMAL, 100, 30
move CONVERSION, CONVERSION_EFFECT, 0, NORMAL, 100, 30
move TRI_ATTACK, NO_ADDITIONAL_EFFECT, 80, NORMAL, 100, 10
move SUPER_FANG, SUPER_FANG_EFFECT, 1, NORMAL, 90, 10
move SLASH, NO_ADDITIONAL_EFFECT, 70, NORMAL, 100, 20
move SUBSTITUTE, SUBSTITUTE_EFFECT, 0, NORMAL, 100, 10
move STRUGGLE, RECOIL_EFFECT, 50, NORMAL, 100, 10

View file

@ -391,7 +391,7 @@ GetTrainerName_: ; 13a58 (4:7a58)
ld [wd0b5], a
ld a, TRAINER_NAME
ld [W_LISTTYPE], a
ld a, $e
ld a, BANK(TrainerNames)
ld [wPredefBank], a
call GetName
ld hl, wcd6d

View file

@ -525,9 +525,9 @@ Func_78e23: ; 78e23 (1e:4e23)
ld [wcc79], a
ld b, $e4
ld a, [W_ANIMATIONID] ; W_ANIMATIONID
cp $aa
cp ANIM_AA
jr c, .asm_78e3f
cp $ae
cp ANIM_AD + 1
jr nc, .asm_78e3f
ld b, $f0
.asm_78e3f
@ -697,13 +697,13 @@ AnimationIdSpecialEffects: ; 78ef5 (1e:4ef5)
db ROCK_SLIDE
dw DoRockSlideSpecialEffects
db $AA
db ANIM_AA
dw Func_79041
db $AB
db ANIM_AB
dw Func_7904c
db $AC
db ANIM_AC
dw Func_7907c
db TOSS_ANIM
@ -2855,10 +2855,10 @@ TossBallAnimation: ; 79e16 (1e:5e16)
.PokeBallAnimations: ; 79e50 (1e:5e50)
; sequence of animations that make up the Poké Ball toss
db POOF_ANIM,HIDEPIC_ANIM,$C2,POOF_ANIM,SHOWPIC_ANIM
db POOF_ANIM,HIDEPIC_ANIM,SHAKE_ANIM,POOF_ANIM,SHOWPIC_ANIM
.BlockBall ; 5E55
ld a,$C1
ld a,TOSS_ANIM
ld [W_ANIMATIONID],a
call PlayAnimation
ld a,(SFX_08_43 - SFX_Headers_08) / 3

View file

@ -2184,7 +2184,9 @@ asm_3d00e: ; 3d00e (f:500e)
jr Func_3d03c
OldManItemList: ; 3d02d (f:502d)
db $01, POKE_BALL, 50, $ff
db 1 ; # items
db POKE_BALL, 50
db -1
Func_3d031
ld hl, wNumBagItems ; wNumBagItems
@ -5471,7 +5473,7 @@ asm_3e70b: ; 3e70b (f:670b)
res 6, [hl] ; no longer invulnerable to typcial attacks
ld a, [W_ENEMYMOVENUM] ; W_ENEMYMOVENUM
ld [wd0b5], a
ld a, $2c
ld a, BANK(MoveNames)
ld [wPredefBank], a
ld a, MOVE_NAME
ld [W_LISTTYPE], a
@ -5950,10 +5952,11 @@ GetCurrentMove: ; 3eabe (f:6abe)
call AddNTimes
ld a, BANK(Moves)
call FarCopyData
ld a, $2c
ld a, BANK(MoveNames)
ld [wPredefBank], a
ld a, $2
ld [W_LISTTYPE], a ; list type 2 = move name
ld a, MOVE_NAME
ld [W_LISTTYPE], a
call GetName
ld de, wcd6d
jp CopyStringToCF4B
@ -7059,16 +7062,16 @@ PoisonEffect: ; 3f24f (f:724f)
dec de
ld a, [H_WHOSETURN] ; $fff3
and a
ld b, $c7
ld b, ANIM_C7
ld hl, W_PLAYERBATTSTATUS3 ; W_PLAYERBATTSTATUS3
ld a, [de]
ld de, W_PLAYERTOXICCOUNTER ; wd06c
jr nz, .asm_3f2b0
ld b, $a9
ld b, ANIM_A9
ld hl, W_ENEMYBATTSTATUS3 ; W_ENEMYBATTSTATUS3
ld de, W_ENEMYTOXICCOUNTER ; wd071
.asm_3f2b0
cp $5c
cp TOXIC
jr nz, .asm_3f2bd
set 0, [hl]
xor a
@ -7170,14 +7173,14 @@ FreezeBurnParalyzeEffect: ; 3f30c (f:730c)
ld a, 1 << PAR
ld [wEnemyMonStatus], a
call Func_3ed27 ;quarter speed of affected monster
ld a, $a9
ld a, ANIM_A9
call Func_3fbb9 ;animation
jp PrintMayNotAttackText ;print paralysis text
.burn
ld a, 1 << BRN
ld [wEnemyMonStatus], a
call Func_3ed64
ld a, $a9
ld a, ANIM_A9
call Func_3fbb9 ;animation
ld hl, BurnedText
jp PrintText
@ -7185,7 +7188,7 @@ FreezeBurnParalyzeEffect: ; 3f30c (f:730c)
call Func_3f9cf ;resets bit 5 of the D063/D068 flags
ld a, 1 << FRZ
ld [wEnemyMonStatus], a
ld a, $a9
ld a, ANIM_A9
call Func_3fbb9 ;animation
ld hl, FrozenText
jp PrintText
@ -7723,7 +7726,7 @@ BideEffect: ; 3f6e5 (f:76e5)
inc a
ld [bc], a
ld a, [H_WHOSETURN]
add $ae
add XSTATITEM_ANIM
jp Func_3fb96
ThrashPetalDanceEffect: ; 3f717 (f:7717)
@ -7742,7 +7745,7 @@ ThrashPetalDanceEffect: ; 3f717 (f:7717)
inc a
ld [de], a
ld a, [H_WHOSETURN] ; $fff3
add $b0
add ANIM_B0
jp Func_3fb96
SwitchAndTeleportEffect: ; 3f739 (f:7739)
@ -7938,11 +7941,11 @@ ChargeEffect: ; 3f88c (f:788c)
ld de, W_PLAYERMOVEEFFECT ; wcfd3
ld a, [H_WHOSETURN] ; $fff3
and a
ld b, $ae
ld b, XSTATITEM_ANIM
jr z, .asm_3f8a1
ld hl, W_ENEMYBATTSTATUS1 ; W_ENEMYBATTSTATUS1
ld de, W_ENEMYMOVEEFFECT ; W_ENEMYMOVEEFFECT
ld b, $af
ld b, ANIM_AF
.asm_3f8a1
set 4, [hl]
ld a, [de]
@ -7950,13 +7953,13 @@ ChargeEffect: ; 3f88c (f:788c)
cp FLY_EFFECT
jr nz, .asm_3f8ad
set 6, [hl] ; mon is now invulnerable to typical attacks (fly/dig)
ld b, $64
ld b, TELEPORT
.asm_3f8ad
ld a, [de]
cp DIG
jr nz, .asm_3f8b6
set 6, [hl] ; mon is now invulnerable to typical attacks (fly/dig)
ld b, $c0
ld b, ANIM_C0
.asm_3f8b6
xor a
ld [wcc5b], a

View file

@ -587,7 +587,7 @@ Func_39b87: ; 39b87 (e:5b87)
jr z, .asm_39bc1
push hl
ld [wd0b5], a
ld a, $2c
ld a, BANK(MoveNames)
ld [wPredefBank], a
ld a, MOVE_NAME
ld [W_LISTTYPE], a
@ -1407,14 +1407,14 @@ SetupEnemyPartyPokeballs: ; 3a887 (e:6887)
ld [hl], $20
ld a, $f8
ld [wTrainerEngageDistance], a
ld hl, wOAMBuffer + $18
ld hl, wOAMBuffer + PARTY_LENGTH * 4
jp Func_3a8e1
SetupPokeballs: ; 0x3a8a6
ld a, [de]
push af
ld de, wBuffer
ld c, $6 ; max num of partymons
ld c, PARTY_LENGTH
ld a, $34 ; empty pokeball
.emptyloop
ld [de], a
@ -1462,7 +1462,7 @@ PickPokeball: ; 3a8c2 (e:68c2)
Func_3a8e1: ; 3a8e1 (e:68e1)
ld de, wHPBarMaxHP
ld c, $6
ld c, PARTY_LENGTH
.asm_3a8e6
ld a, [W_BASECOORDY] ; wd082
ld [hli], a

View file

@ -537,7 +537,7 @@ TradeCenter_SelectMon:
ld [wTileMap + $141], a
.asm_574a
call JoypadLowSensitivity
ld a, [$ffb5]
ld a, [hJoy5]
and a
jr z, .asm_574a ; 0x5750 $f8
bit 0, a
@ -896,7 +896,7 @@ Func_5a5f: ; 5a5f (1:5a5f)
ld [W_GRASSRATE], a ; W_GRASSRATE
inc a
ld [W_ISLINKBATTLE], a ; W_ISLINKBATTLE
ld [$ffb5], a
ld [hJoy5], a
ld a, $a
ld [wMusicHeaderPointer], a
ld a, BANK(Music_Celadon)

View file

@ -140,7 +140,7 @@ asm_7befa: ; 7befa (1e:7efa)
call DelayFrame
push bc
call JoypadLowSensitivity
ld a, [$ffb5]
ld a, [hJoy5]
pop bc
and $2
jr nz, .asm_7bf0d

View file

@ -135,7 +135,7 @@ Func_3ad71: ; 3ad71 (e:6d71)
ld [wHPBarMaxHP + 1], a
ld a, MONSTER_NAME
ld [W_LISTTYPE], a
ld a, $e
ld a, BANK(TrainerNames) ; bank is not used for monster names
ld [wPredefBank], a
call GetName
push hl

View file

@ -3,10 +3,10 @@ _GivePokemon: ; 4fda5 (13:7da5)
xor a
ld [wccd3], a
ld a, [wPartyCount] ; wPartyCount
cp $6
cp PARTY_LENGTH
jr c, .asm_4fe01
ld a, [W_NUMINBOX] ; wda80
cp $14
cp MONS_PER_BOX
jr nc, .asm_4fdf9
xor a
ld [W_ENEMYBATTSTATUS3], a ; W_ENEMYBATTSTATUS3
@ -18,18 +18,18 @@ _GivePokemon: ; 4fda5 (13:7da5)
ld hl, wcf4b
ld a, [wd5a0]
and $7f
cp $9
cp 9
jr c, .asm_4fdec
sub $9
ld [hl], $f7
sub 9
ld [hl], "1"
inc hl
add $f6
add "0"
jr .asm_4fdee
.asm_4fdec
add $f7
add "1"
.asm_4fdee
ld [hli], a
ld [hl], $50
ld [hl], "@"
ld hl, SetToBoxText
call PrintText
scf

View file

@ -110,10 +110,10 @@ ItemUseBall: ; d687 (3:5687)
dec a
jr z,.UseBall
ld a,[wPartyCount] ;is Party full?
cp a,6
cp a,PARTY_LENGTH
jr nz,.UseBall
ld a,[W_NUMINBOX] ;is Box full?
cp a,20
cp a,MONS_PER_BOX
jp z,BoxFullCannotThrowBall
.UseBall ;$56a7
;ok, you can use a ball
@ -421,7 +421,7 @@ ItemUseBall: ; d687 (3:5687)
predef ShowPokedexData
.checkParty ;$58f4
ld a,[wPartyCount]
cp a,6 ;is party full?
cp a,PARTY_LENGTH ;is party full?
jr z,.sendToBox
xor a
ld [wcc49],a

View file

@ -88,25 +88,13 @@ Func_213c8:: ; 213c8 (8:53c8)
ld [H_AUTOBGTRANSFERENABLED], a ; $ffba
ret
SomeonesPCText: ; 2148b (8:548b)
db "SOMEONE's PC@"
SomeonesPCText: db "SOMEONE's PC@"
BillsPCText: db "BILL's PC@"
PlayersPCText: db "'s PC@"
OaksPCText: db "PROF.OAK's PC@"
PKMNLeaguePCText: db $4a, "LEAGUE@"
LogOffPCText: db "LOG OFF@"
BillsPCText: ; 21497 (8:5497)
db "BILL's PC@"
PlayersPCText: ; 214a0 (8:54a0)
db "'s PC@"
OaksPCText: ; 214a5 (8:54a5)
db "PROF.OAK's PC@"
PKMNLeaguePCText: ; 214b2 (8:54b2)
db $4a,"LEAGUE@"
LogOffPCText: ; 214ba (8:54ba)
db "LOG OFF@"
Func_214c2:: ; 214c2 (8:54c2)
BillsPC_:: ; 0x214c2
ld hl, wd730
set 6, [hl]
@ -167,15 +155,15 @@ BillsPCMenu:
call TextBoxBorder
ld a, [wd5a0]
and $7f
cp $9
cp 9
jr c, .asm_2154f
sub $9
sub 9
hlCoord 17, 16
ld [hl], $f7
add $f6
ld [hl], "1"
add "0"
jr .asm_21551
.asm_2154f
add $f7
add "1"
.asm_21551
Coorda 18, 16
hlCoord 10, 16
@ -227,7 +215,7 @@ BillsPCDeposit:
jp BillsPCMenu
.asm_215bb
ld a, [W_NUMINBOX] ; wda80
cp $14
cp MONS_PER_BOX
jr nz, .asm_215cb
ld hl, BoxFullText ; $5802
call PrintText
@ -251,15 +239,15 @@ BillsPCDeposit:
ld hl, wWhichTrade ; wWhichTrade
ld a, [wd5a0]
and $7f
cp $9
cp 9
jr c, .asm_2160a
sub $9
ld [hl], $f7
sub 9
ld [hl], "1"
inc hl
add $f6
add "0"
jr .asm_2160c
.asm_2160a
add $f7
add "1"
.asm_2160c
ld [hli], a
ld [hl], $50
@ -276,7 +264,7 @@ Func_21618: ; 21618 (8:5618)
jp Func_214e8
.asm_21627
ld a, [wPartyCount] ; wPartyCount
cp $6
cp PARTY_LENGTH
jr nz, .asm_21637
ld hl, CantTakeMonText ; $5811
call PrintText
@ -353,7 +341,12 @@ Func_216be: ; 216be (8:56be)
ret
BillsPCMenuText: ; 216e1 (8:56e1)
db "WITHDRAW ",$4a,$4e,"DEPOSIT ",$4a,$4e,"RELEASE ",$4a,$4e,"CHANGE BOX",$4e,"SEE YA!@"
db "WITHDRAW ", $4a
next "DEPOSIT ", $4a
next "RELEASE ", $4a
next "CHANGE BOX"
next "SEE YA!"
db "@"
BoxNoPCText: ; 21713 (8:5713)
db "BOX No.@"
@ -389,7 +382,7 @@ HMMoveArray: ; 21745 (8:5745)
db SURF
db STRENGTH
db FLASH
db $ff
db -1
Func_2174b: ; 2174b (8:574b)
hlCoord 9, 10
@ -458,14 +451,11 @@ Func_2174b: ; 2174b (8:574b)
call LoadGBPal
jr .asm_2178f
DepositPCText: ; 217cb (8:57cb)
db "DEPOSIT@"
WithdrawPCText: ; 217d3 (8:57d3)
db "WITHDRAW@"
StatsCancelPCText: ; 217dc (8:57dc)
db "STATS",$4e,"CANCEL@"
DepositPCText: db "DEPOSIT@"
WithdrawPCText: db "WITHDRAW@"
StatsCancelPCText:
db "STATS"
next "CANCEL@"
SwitchOnText: ; 0x217e9
TX_FAR _SwitchOnText
@ -523,7 +513,7 @@ PrintJustAMomentText1:: ; 5824 (8:5825)
cp $c
ret nz
ld a, [W_CURMAP]
cp $ef
cp BATTLE_CENTER
ld a, $2
jr z, .asm_2183a
inc a
@ -541,7 +531,7 @@ PrintJustAMomentText2:: ; 5845 (8:5845)
cp $8
ret nz
ld a, [W_CURMAP]
cp $ef
cp BATTLE_CENTER
ld a, $2
jr z, .asm_2185a
inc a

View file

@ -307,7 +307,7 @@ Func_5d5f: ; 5d5f (1:5d5f)
xor a
ld [hJoyPressed], a
ld [hJoyHeld], a
ld [$ffb5], a
ld [hJoy5], a
ld [wd72d], a
ld hl, wd732
set 0, [hl]
@ -461,7 +461,7 @@ DisplayOptionMenu: ; 5e8a (1:5e8a)
call SetOptionsFromCursorPositions
.getJoypadStateLoop
call JoypadLowSensitivity
ld a,[$ffb5]
ld a,[hJoy5]
ld b,a
and a,%11111011 ; any key besides select pressed?
jr z,.getJoypadStateLoop

View file

@ -10,7 +10,7 @@ ShowPokedexMenu: ; 40000 (10:4000)
ld [wLastMenuItem],a
inc a
ld [wd11e],a
ld [$ffb7],a
ld [hJoy7],a
.setUpGraphics
ld b,$08
call GoPAL_SET
@ -35,7 +35,7 @@ ShowPokedexMenu: ; 40000 (10:4000)
ld [wcc37],a
ld [wCurrentMenuItem],a
ld [wLastMenuItem],a
ld [$ffb7],a
ld [hJoy7],a
ld [wcd3a],a
ld [wcd3b],a
pop af
@ -550,7 +550,7 @@ ShowPokedexDataInternal: ; 402e2 (10:42e2)
ld [$fff4],a
.waitForButtonPress
call JoypadLowSensitivity
ld a,[$ffb5]
ld a,[hJoy5]
and a,%00000011 ; A button and B button
jr z,.waitForButtonPress
pop af

View file

@ -445,15 +445,15 @@ Func_7393f: ; 7393f (1c:793f)
res 2, [hl]
ld a, [wd5a0]
and $7f
cp $9
cp 9
jr c, .asm_739a6
sub $9
sub 9
hlCoord 8, 2
ld [hl], $f7
add $f6
ld [hl], "1"
add "0"
jr .asm_739a8
.asm_739a6
add $f7
add "1"
.asm_739a8
Coorda 9, 2
hlCoord 1, 2

View file

@ -797,7 +797,7 @@ SlotMachine_3784e: ; 3784e (d:784e)
SlotMachine_37882: ; 37882 (d:7882)
call DelayFrame
call JoypadLowSensitivity
ld a, [$ffb5]
ld a, [hJoy5]
and $1
ret z
ld hl, wTrainerSpriteOffset

View file

@ -6,7 +6,7 @@ DisplayTownMap: ; 70e3e (1c:4e3e)
ld [hl], $ff
push hl
ld a, $1
ld [$ffb7], a
ld [hJoy7], a
ld a, [W_CURMAP] ; W_CURMAP
push af
ld b, $0
@ -66,7 +66,7 @@ Func_70e92: ; 70e92 (1c:4e92)
.asm_70ec8
call Func_716c6
call JoypadLowSensitivity
ld a, [$ffb5]
ld a, [hJoy5]
ld b, a
and $c3
jr z, .asm_70ec8
@ -78,7 +78,7 @@ Func_70e92: ; 70e92 (1c:4e92)
jr nz, .asm_70f01
xor a
ld [wd09b], a
ld [$ffb7], a
ld [hJoy7], a
ld [W_SUBANIMTRANSFORM], a ; W_SUBANIMTRANSFORM
call Func_711ab
pop hl
@ -188,7 +188,7 @@ LoadTownMap_Fly: ; 70f90 (1c:4f90)
push hl
call DelayFrame
call JoypadLowSensitivity
ld a, [$ffb5]
ld a, [hJoy5]
ld b, a
pop hl
and $c3

View file

@ -203,9 +203,9 @@ Func_41245: ; 41245 (10:5245)
and a
jr nz, .asm_41273
call Delay50
ld a, $ad
ld a, ANIM_AD
call Func_41676
ld a, $aa
ld a, ANIM_AA
call Func_41676
ld a, [wWhichTrade] ; wWhichTrade
call PlayCry
@ -242,9 +242,9 @@ Func_41298: ; 41298 (10:5298)
ret
Func_412d2: ; 412d2 (10:52d2)
ld a, $ab
ld a, ANIM_AB
call Func_41676
ld c, $a
ld c, 10
call DelayFrames
ld a, $e4
ld [rOBP0], a ; $ff48
@ -295,7 +295,7 @@ UnknownOAM_4132e: ; 4132e (10:532e)
db $7E,$40,$7E,$60
Func_41336: ; 41336 (10:5336)
ld a, $ac
ld a, ANIM_AC
call Func_41676
call Func_415c8
hlCoord 4, 10
@ -308,7 +308,7 @@ Func_41336: ; 41336 (10:5336)
ld [H_AUTOBGTRANSFERENABLED], a ; $ffba
ld a, [wTrainerEngageDistance]
call Func_415a4
ld a, $ad
ld a, ANIM_AD
call Func_41676
ld a, $1
ld [H_AUTOBGTRANSFERENABLED], a ; $ffba

1562
home.asm

File diff suppressed because it is too large Load diff

24
home/copy.asm Normal file
View file

@ -0,0 +1,24 @@
FarCopyData::
; Copy bc bytes from a:hl to de.
ld [wBuffer], a
ld a, [H_LOADEDROMBANK]
push af
ld a, [wBuffer]
ld [H_LOADEDROMBANK], a
ld [MBC3RomBank], a
call CopyData
pop af
ld [H_LOADEDROMBANK], a
ld [MBC3RomBank], a
ret
CopyData::
; Copy bc bytes from hl to de.
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
or b
jr nz, CopyData
ret

228
home/copy2.asm Normal file
View file

@ -0,0 +1,228 @@
FarCopyData2::
; Identical to FarCopyData, but uses $ff8b
; as temp space instead of wBuffer.
ld [$ff8b],a
ld a,[H_LOADEDROMBANK]
push af
ld a,[$ff8b]
ld [H_LOADEDROMBANK],a
ld [MBC3RomBank],a
call CopyData
pop af
ld [H_LOADEDROMBANK],a
ld [MBC3RomBank],a
ret
FarCopyData3::
; Copy bc bytes from a:de to hl.
ld [$ff8b],a
ld a,[H_LOADEDROMBANK]
push af
ld a,[$ff8b]
ld [H_LOADEDROMBANK],a
ld [MBC3RomBank],a
push hl
push de
push de
ld d,h
ld e,l
pop hl
call CopyData
pop de
pop hl
pop af
ld [H_LOADEDROMBANK],a
ld [MBC3RomBank],a
ret
FarCopyDataDouble::
; Expand bc bytes of 1bpp image data
; from a:hl to 2bpp data at de.
ld [$ff8b],a
ld a,[H_LOADEDROMBANK]
push af
ld a,[$ff8b]
ld [H_LOADEDROMBANK],a
ld [MBC3RomBank],a
.loop
ld a,[hli]
ld [de],a
inc de
ld [de],a
inc de
dec bc
ld a,c
or b
jr nz,.loop
pop af
ld [H_LOADEDROMBANK],a
ld [MBC3RomBank],a
ret
CopyVideoData::
; Wait for the next VBlank, then copy c 2bpp
; tiles from b:de to hl, 8 tiles at a time.
; This takes c/8 frames.
ld a, [H_AUTOBGTRANSFERENABLED]
push af
xor a ; disable auto-transfer while copying
ld [H_AUTOBGTRANSFERENABLED], a
ld a, [H_LOADEDROMBANK]
ld [$ff8b], a
ld a, b
ld [H_LOADEDROMBANK], a
ld [MBC3RomBank], a
ld a, e
ld [H_VBCOPYSRC], a
ld a, d
ld [H_VBCOPYSRC + 1], a
ld a, l
ld [H_VBCOPYDEST], a
ld a, h
ld [H_VBCOPYDEST + 1], a
.loop
ld a, c
cp 8
jr nc, .keepgoing
.done
ld [H_VBCOPYSIZE], a
call DelayFrame
ld a, [$ff8b]
ld [H_LOADEDROMBANK], a
ld [MBC3RomBank], a
pop af
ld [H_AUTOBGTRANSFERENABLED], a
ret
.keepgoing
ld a, 8
ld [H_VBCOPYSIZE], a
call DelayFrame
ld a, c
sub 8
ld c, a
jr .loop
CopyVideoDataDouble::
; Wait for the next VBlank, then copy c 1bpp
; tiles from b:de to hl, 8 tiles at a time.
; This takes c/8 frames.
ld a, [H_AUTOBGTRANSFERENABLED]
push af
xor a ; disable auto-transfer while copying
ld [H_AUTOBGTRANSFERENABLED], a
ld a, [H_LOADEDROMBANK]
ld [$ff8b], a
ld a, b
ld [H_LOADEDROMBANK], a
ld [MBC3RomBank], a
ld a, e
ld [H_VBCOPYDOUBLESRC], a
ld a, d
ld [H_VBCOPYDOUBLESRC + 1], a
ld a, l
ld [H_VBCOPYDOUBLEDEST], a
ld a, h
ld [H_VBCOPYDOUBLEDEST + 1], a
.loop
ld a, c
cp 8
jr nc, .keepgoing
.done
ld [H_VBCOPYDOUBLESIZE], a
call DelayFrame
ld a, [$ff8b]
ld [H_LOADEDROMBANK], a
ld [MBC3RomBank], a
pop af
ld [H_AUTOBGTRANSFERENABLED], a
ret
.keepgoing
ld a, 8
ld [H_VBCOPYDOUBLESIZE], a
call DelayFrame
ld a, c
sub 8
ld c, a
jr .loop
ClearScreenArea::
; Clear tilemap area cxb at hl.
ld a, $7f ; blank tile
ld de, 20 ; screen width
.y
push hl
push bc
.x
ld [hli], a
dec c
jr nz, .x
pop bc
pop hl
add hl, de
dec b
jr nz, .y
ret
CopyScreenTileBufferToVRAM::
; Copy wTileMap to the BG Map starting at b * $100.
; This is done in thirds of 6 rows, so it takes 3 frames.
ld c, 6
ld hl, $600 * 0
ld de, wTileMap + 20 * 6 * 0
call .setup
call DelayFrame
ld hl, $600 * 1
ld de, wTileMap + 20 * 6 * 1
call .setup
call DelayFrame
ld hl, $600 * 2
ld de, wTileMap + 20 * 6 * 2
call .setup
jp DelayFrame
.setup
ld a, d
ld [H_VBCOPYBGSRC+1], a
call GetRowColAddressBgMap
ld a, l
ld [H_VBCOPYBGDEST], a
ld a, h
ld [H_VBCOPYBGDEST+1], a
ld a, c
ld [H_VBCOPYBGNUMROWS], a
ld a, e
ld [H_VBCOPYBGSRC], a
ret
ClearScreen::
; Clear wTileMap, then wait
; for the bg map to update.
ld bc, 20 * 18
inc b
ld hl, wTileMap
ld a, $7f
.loop
ld [hli], a
dec c
jr nz, .loop
dec b
jr nz, .loop
jp Delay3

304
home/serial.asm Normal file
View file

@ -0,0 +1,304 @@
Serial:: ; 2125 (0:2125)
push af
push bc
push de
push hl
ld a, [$ffaa]
inc a
jr z, .asm_2142
ld a, [$ff01]
ld [$ffad], a
ld a, [$ffac]
ld [$ff01], a
ld a, [$ffaa]
cp $2
jr z, .asm_2162
ld a, $80
ld [$ff02], a
jr .asm_2162
.asm_2142
ld a, [$ff01]
ld [$ffad], a
ld [$ffaa], a
cp $2
jr z, .asm_215f
xor a
ld [$ff01], a
ld a, $3
ld [rDIV], a ; $ff04
.asm_2153
ld a, [rDIV] ; $ff04
bit 7, a
jr nz, .asm_2153
ld a, $80
ld [$ff02], a
jr .asm_2162
.asm_215f
xor a
ld [$ff01], a
.asm_2162
ld a, $1
ld [$ffa9], a
ld a, $fe
ld [$ffac], a
pop hl
pop de
pop bc
pop af
reti
Func_216f:: ; 216f (0:216f)
ld a, $1
ld [$ffab], a
.asm_2173
ld a, [hl]
ld [$ffac], a
call Func_219a
push bc
ld b, a
inc hl
ld a, $30
.asm_217e
dec a
jr nz, .asm_217e
ld a, [$ffab]
and a
ld a, b
pop bc
jr z, .asm_2192
dec hl
cp $fd
jr nz, .asm_2173
xor a
ld [$ffab], a
jr .asm_2173
.asm_2192
ld [de], a
inc de
dec bc
ld a, b
or c
jr nz, .asm_2173
ret
Func_219a:: ; 219a (0:219a)
xor a
ld [$ffa9], a
ld a, [$ffaa]
cp $2
jr nz, .asm_21a7
ld a, $81
ld [$ff02], a
.asm_21a7
ld a, [$ffa9]
and a
jr nz, .asm_21f1
ld a, [$ffaa]
cp $1
jr nz, .asm_21cc
call Func_2237
jr z, .asm_21cc
call Func_2231
push hl
ld hl, wcc48
inc [hl]
jr nz, .asm_21c3
dec hl
inc [hl]
.asm_21c3
pop hl
call Func_2237
jr nz, .asm_21a7
jp Func_223f
.asm_21cc
ld a, [rIE] ; $ffff
and $f
cp $8
jr nz, .asm_21a7
ld a, [W_NUMHITS] ; wd074
dec a
ld [W_NUMHITS], a ; wd074
jr nz, .asm_21a7
ld a, [wd075]
dec a
ld [wd075], a
jr nz, .asm_21a7
ld a, [$ffaa]
cp $1
jr z, .asm_21f1
ld a, $ff
.asm_21ee
dec a
jr nz, .asm_21ee
.asm_21f1
xor a
ld [$ffa9], a
ld a, [rIE] ; $ffff
and $f
sub $8
jr nz, .asm_2204
ld [W_NUMHITS], a ; wd074
ld a, $50
ld [wd075], a
.asm_2204
ld a, [$ffad]
cp $fe
ret nz
call Func_2237
jr z, .asm_221f
push hl
ld hl, wcc48
ld a, [hl]
dec a
ld [hld], a
inc a
jr nz, .asm_2219
dec [hl]
.asm_2219
pop hl
call Func_2237
jr z, Func_223f
.asm_221f
ld a, [rIE] ; $ffff
and $f
cp $8
ld a, $fe
ret z
ld a, [hl]
ld [$ffac], a
call DelayFrame
jp Func_219a
Func_2231:: ; 2231 (0:2231)
ld a, $f
.asm_2233
dec a
jr nz, .asm_2233
ret
Func_2237:: ; 2237 (0:2237)
push hl
ld hl, wcc47
ld a, [hli]
or [hl]
pop hl
ret
Func_223f:: ; 223f (0:223f)
dec a
ld [wcc47], a
ld [wcc48], a
ret
Func_2247:: ; 2247 (0:2247)
ld hl, wcc42
ld de, wcc3d
ld c, $2
ld a, $1
ld [$ffab], a
.asm_2253
call DelayFrame
ld a, [hl]
ld [$ffac], a
call Func_219a
ld b, a
inc hl
ld a, [$ffab]
and a
ld a, $0
ld [$ffab], a
jr nz, .asm_2253
ld a, b
ld [de], a
inc de
dec c
jr nz, .asm_2253
ret
Func_226e:: ; 226e (0:226e)
call SaveScreenTilesToBuffer1
callab PrintWaitingText
call Func_227f
jp LoadScreenTilesFromBuffer1
Func_227f:: ; 227f (0:227f)
ld a, $ff
ld [wcc3e], a
.asm_2284
call Func_22c3
call DelayFrame
call Func_2237
jr z, .asm_22a0
push hl
ld hl, wcc48
dec [hl]
jr nz, .asm_229f
dec hl
dec [hl]
jr nz, .asm_229f
pop hl
xor a
jp Func_223f
.asm_229f
pop hl
.asm_22a0
ld a, [wcc3e]
inc a
jr z, .asm_2284
ld b, $a
.asm_22a8
call DelayFrame
call Func_22c3
dec b
jr nz, .asm_22a8
ld b, $a
.asm_22b3
call DelayFrame
call Func_22ed
dec b
jr nz, .asm_22b3
ld a, [wcc3e]
ld [wcc3d], a
ret
Func_22c3:: ; 22c3 (0:22c3)
call asm_22d7
ld a, [wcc42]
add $60
ld [$ffac], a
ld a, [$ffaa]
cp $2
jr nz, asm_22d7
ld a, $81
ld [$ff02], a
asm_22d7:: ; 22d7 (0:22d7)
ld a, [$ffad]
ld [wcc3d], a
and $f0
cp $60
ret nz
xor a
ld [$ffad], a
ld a, [wcc3d]
and $f
ld [wcc3e], a
ret
Func_22ed:: ; 22ed (0:22ed)
xor a
ld [$ffac], a
ld a, [$ffaa]
cp $2
ret nz
ld a, $81
ld [$ff02], a
ret
Func_22fa:: ; 22fa (0:22fa)
ld a, $2
ld [$ff01], a
xor a
ld [$ffad], a
ld a, $80
ld [$ff02], a
ret

3
home/timer.asm Normal file
View file

@ -0,0 +1,3 @@
; timer interrupt is apparently not invoked anyway
Timer:: ; 2306 (0:2306)
reti

View file

@ -1,8 +1,8 @@
H_SPRITEWIDTH EQU $FF8B ; in bytes
H_SPRITEWIDTH EQU $FF8B ; in tiles
H_SPRITEINTERLACECOUNTER EQU $FF8B
H_SPRITEHEIGHT EQU $FF8C ; in bytes
H_SPRITEOFFSET EQU $FF8D
H_SPRITEHEIGHT EQU $FF8C ; in tiles
H_SPRITEOFFSET EQU $FF8D
hSoftReset EQU $FF8A
; Initialized to 16.
@ -14,28 +14,31 @@ hSoftReset EQU $FF8A
H_DOWNARROWBLINKCNT1 EQU $FF8B
H_DOWNARROWBLINKCNT2 EQU $FF8C
; Note: the following multiplication and division addresses are used for multiple purposes
; and so they overlap with each other
; Multiplcation and division variables are meant
; to overlap for back-to-back usage. Big endian.
H_MULTIPLICAND EQU $FF96 ; 3 bytes, big endian order
H_MULTIPLICAND EQU $FF96 ; 3 bytes
H_MULTIPLIER EQU $FF99 ; 1 byte
H_PRODUCT EQU $FF95 ; 4 bytes, big endian order
H_PRODUCT EQU $FF95 ; 4 bytes
H_DIVIDEND EQU $FF95 ; 4 bytes, big endian order
H_DIVIDEND EQU $FF95 ; 4 bytes
H_DIVISOR EQU $FF99 ; 1 byte
H_QUOTIENT EQU $FF95 ; 4 bytes, big endian order
H_QUOTIENT EQU $FF95 ; 4 bytes
H_REMAINDER EQU $FF99 ; 1 byte
; used to convert numbers to decimal
H_PASTLEADINGZEROES EQU $FF95 ; flag to indicate that a nonzero digit has been printed
H_NUMTOPRINT EQU $FF96 ; 3 bytes, big endian order
H_POWEROFTEN EQU $FF99 ; 3 bytes, big endian order
H_SAVEDNUMTOPRINT EQU $FF9C ; 3 bytes, big endian order (to back out of a subtraction)
; PrintNumber (big endian).
H_PASTLEADINGZEROES EQU $FF95 ; last char printed
H_NUMTOPRINT EQU $FF96 ; 3 bytes
H_POWEROFTEN EQU $FF99 ; 3 bytes
H_SAVEDNUMTOPRINT EQU $FF9C ; 3 bytes
hJoyHeldLast EQU $FFB1
hJoyReleased EQU $FFB2
hJoyPressed EQU $FFB3
hJoyHeld EQU $FFB4
hJoyHeldLast EQU $FFB1
hJoyReleased EQU $FFB2
hJoyPressed EQU $FFB3
hJoyHeld EQU $FFB4
hJoy5 EQU $FFB5
hJoy6 EQU $FFB6
hJoy7 EQU $FFB7
H_LOADEDROMBANK EQU $FFB8

View file

@ -11,6 +11,20 @@ page EQUS "db $49," ; Start a new Pokedex page.
dex EQUS "db $5f, $50" ; End a Pokedex entry.
percent EQUS "* $ff / 100"
; Constant enumeration is useful for monsters, items, moves, etc.
const_def: MACRO
const_value = 0
ENDM
const: MACRO
\1 EQU const_value
const_value = const_value + 1
ENDM
homecall: MACRO
ld a, [H_LOADEDROMBANK]
push af
@ -189,6 +203,24 @@ predef_jump: MACRO
ENDM
add_tx_pre: MACRO
\1_id:: dw \1
ENDM
tx_pre_id: MACRO
ld a, (\1_id - TextPredefs) / 2
ENDM
tx_pre: MACRO
tx_pre_id \1
call PrintPredefTextID
ENDM
tx_pre_jump: MACRO
tx_pre_id \1
jp PrintPredefTextID
ENDM
;1_channel EQU $00
;2_channels EQU $40

View file

@ -3419,7 +3419,7 @@ _AddPartyMon: ; f2e5 (3:72e5)
.asm_f2f2
ld a, [de]
inc a
cp $7
cp PARTY_LENGTH + 1
ret nc
ld [de], a
ld a, [de]
@ -3681,7 +3681,7 @@ AddPartyMon_WriteMovePP: ; f476 (3:7476)
_AddEnemyMonToPlayerParty: ; f49d (3:749d)
ld hl, wPartyCount
ld a, [hl]
cp $6
cp PARTY_LENGTH
scf
ret z ; party full, return failure
inc a
@ -3750,13 +3750,13 @@ Func_f51e: ; f51e (3:751e)
jr z, .asm_f575
ld hl, W_NUMINBOX ; wda80
ld a, [hl]
cp $14
cp MONS_PER_BOX
jr nz, .partyOrBoxNotFull
jr .boxFull
.checkPartyMonSlots
ld hl, wPartyCount ; wPartyCount
ld a, [hl]
cp $6
cp PARTY_LENGTH
jr nz, .partyOrBoxNotFull
.boxFull
scf
@ -3899,7 +3899,7 @@ Func_f51e: ; f51e (3:751e)
ld a, d
ld [W_CURENEMYLVL], a ; W_CURENEMYLVL
pop hl
ld bc, $21
ld bc, wBoxMon2 - wBoxMon1
add hl, bc
ld [hli], a
ld d, h

View file

@ -67,9 +67,9 @@ DayCareMScript_562e1: ; 562e1 (15:62e1)
call LoadMonData
callab Func_58f43
ld a, d
cp $64
cp MAX_LEVEL
jr c, .asm_56315
ld d, $64
ld d, MAX_LEVEL
callab CalcExperience
ld hl, wDayCareMonExp
ld a, [H_NUMTOPRINT]
@ -78,7 +78,7 @@ DayCareMScript_562e1: ; 562e1 (15:62e1)
ld [hli], a
ld a, [$ff98]
ld [hl], a
ld d, $64
ld d, MAX_LEVEL
.asm_56315
xor a
@ -100,7 +100,7 @@ DayCareMScript_562e1: ; 562e1 (15:62e1)
.asm_56333
call PrintText
ld a, [wPartyCount]
cp $6
cp PARTY_LENGTH
ld hl, DayCareMText_56440
jp z, .asm_56403
ld de, wTrainerFacingDirection

View file

@ -27,11 +27,11 @@ Route5GateScript0: ; 1df50 (7:5f50)
xor a
ld [hJoyHeld], a
callba RemoveGuardDrink
ld a, [$ff00+$db]
ld a, [$ffdb]
and a
jr nz, .asm_1df82 ; 0x1df70 $10
ld a, $2
ld [$ff00+$8c], a
ld [$ff8c], a
call DisplayTextID
call Route5GateScript_1df43
ld a, $1
@ -39,7 +39,7 @@ Route5GateScript0: ; 1df50 (7:5f50)
ret
.asm_1df82
ld a, $3
ld [$ff00+$8c], a
ld [$ff8c], a
call DisplayTextID
ld hl, wd728
set 6, [hl]
@ -74,7 +74,7 @@ Route5GateText1: ; 1dfaa (7:5faa)
bit 6, a
jr nz, .asm_88856 ; 0x1dfb0 $2c
callba RemoveGuardDrink
ld a, [$ff00+$db]
ld a, [$ffdb]
and a
jr nz, .asm_768a2 ; 0x1dfbd $11
ld hl, Route5GateText2

View file

@ -1,20 +1,11 @@
if !def(_RED)
_RED EQU 0
endc
if !def(_BLUE)
_BLUE EQU 0
endc
if !def(_JAPAN)
_JAPAN EQU 0
endc
if !def(_GREEN)
_GREEN EQU 0
endc
if !def(_YELLOW)
_YELLOW EQU 0
check_ver: MACRO
if !def(\1)
\1 EQU 0
endc
ENDM
check_ver _RED
check_ver _BLUE
check_ver _JAPAN
check_ver _GREEN
check_ver _YELLOW