Merged and fixed incbin conflicts with Danny.

This commit is contained in:
Marcus Huderle 2013-12-15 16:18:14 -06:00
commit 549fe35420
40 changed files with 14446 additions and 8362 deletions

18
.gitignore vendored
View file

@ -1,3 +1,6 @@
# global label defs are generated
globals.asm
# precompiled python
*.pyc
@ -9,6 +12,11 @@
# roms
*.gbc
*.gb
# rgbds extras
*.map
*.sym
# generated
*.tx
@ -20,13 +28,9 @@
*.json
# for any of the poor souls with save game files in their working directory
baserom.sgm
baserom.sav
pokered.sgm
pokered.sav
baserom.sys
pokered.sys
*.sgm
*.sav
*.sys
# for vim configuration
# url: http://www.vim.org/scripts/script.php?script_id=441

45
INSTALL.md Normal file
View file

@ -0,0 +1,45 @@
# Getting Started
A base rom of Pokémon Red is required to assemble **pokered.gbc**.
Pokemon Red (UE) [S][!].gb
(MD5: 3d45c1ee9abd5738df46d2bdda8b57dc)
# Linux
Linux dependencies. OSX users already have these after installing Xcode.
sudo apt-get install make gcc bison git python python-setuptools
Set up the **pokered** repository:
git clone git://github.com/iimarckus/pokered.git
cd pokered
./init.sh
Copy the Pokémon Red rom to this directory. Name it **baserom.gbc**.
Now **pokered.gbc** can be built from source.
make red
This should take about 10-15 seconds. Subsequent builds are faster.
To build Pokémon Blue:
make blue
# OSX
Download and install **Xcode**. Then follow the Linux instructions.
# Windows
Not yet.

View file

@ -1,32 +1,65 @@
PYTHON := python
.SUFFIXES: .asm .tx .o .gbc
.PHONY: all clean red blue
.SECONDEXPANSION:
TEXTFILES := $(shell find ./ -type f -name '*.asm')
all: pokered.gbc
TEXTQUEUE :=
pokered.o: pokered.tx main.tx constants.tx wram.tx ${TEXTFILES:.asm=.tx}
rgbasm -o pokered.o pokered.tx
pokeblue.o: pokeblue.tx main.tx constants.tx wram.tx ${TEXTFILES:.asm=.tx}
rgbasm -o pokeblue.o pokeblue.tx
RED_OBJS := pokered.o
BLUE_OBJS := pokeblue.o
OBJS := $(RED_OBJS) $(BLUE_OBJS)
ROMS := pokered.gbc pokeblue.gbc
# generate dependencies for each object
$(shell $(foreach obj, $(OBJS), \
$(eval $(obj:.o=)_DEPENDENCIES := $(shell $(PYTHON) extras/pokemontools/scan_includes.py $(obj:.o=.asm) | sed s/globals.asm//g)) \
))
$(shell $(foreach obj, $(OBJS), \
$(eval ALL_DEPENDENCIES += $($(obj:.o=)_DEPENDENCIES)) \
))
all: $(ROMS)
red: pokered.gbc
blue: pokeblue.gbc
redrle: extras/redtools/redrle.c
${CC} -o $@ $>
.asm.tx:
python textpre.py < $< > $@
clean:
rm -f $(ROMS)
rm -f $(OBJS)
rm -f globals.asm
@echo "removing *.tx" && find . -iname '*.tx' -exec rm {} +
rm -f redrle
pokered.gbc: pokered.o
rgblink -o $@ $*.o
baserom.gbc: ;
@echo "Wait! Need baserom.gbc first. Check README and INSTALL for details." && false
%.asm: ;
.asm.tx:
$(eval TEXTQUEUE := $(TEXTQUEUE) $<)
@rm -f $@
globals.asm: $(ALL_DEPENDENCIES:.asm=.tx) $(OBJS:.o=.tx)
@touch $@
@$(PYTHON) prequeue.py $(TEXTQUEUE)
globals.tx: globals.asm
@cp $< $@
$(OBJS): $$*.tx $$(patsubst %.asm, %.tx, $$($$*_DEPENDENCIES))
rgbasm -o $@ $*.tx
pokered.gbc: globals.tx $(RED_OBJS)
rgblink -n $*.sym -m $*.map -o $@ $(RED_OBJS)
rgbfix -jsv -k 01 -l 0x33 -m 0x13 -p 0 -r 03 -t "POKEMON RED" $@
cmp baserom.gbc $@
pokeblue.gbc: pokeblue.o
rgblink -o $@ $*.o
pokeblue.gbc: globals.tx $(BLUE_OBJS)
rgblink -n $*.sym -m $*.map -o $@ $(BLUE_OBJS)
rgbfix -jsv -k 01 -l 0x33 -m 0x13 -p 0 -r 03 -t "POKEMON BLUE" $@
cmp blue.gbc $@
clean:
rm -f pokered.o pokered.gbc pokeblue.o pokeblue.gbc redrle $(TEXTFILES:.asm=.tx)
more: pokered.gbc pokeblue.gbc

19
README
View file

@ -1,19 +0,0 @@
This is a disassembly of Pokémon Red.
It uses the following ROM as a base:
Pokemon Red (UE) [S][!].gb
(MD5: 3d45c1ee9abd5738df46d2bdda8b57dc)
To assemble, first install RGBDS and put it in your path.
The version of RGBDS needed is rgbds-linux:
https://github.com/bentley/rgbds/
git://github.com/bentley/rgbds.git
Then copy the Pokémon ROM to this directory as "baserom.gbc".
Then run "make" in your shell.
This will output a file named "pokered.gbc".
Our IRC channel is located here:
server nucleus.kafuka.org, channel #skeetendo

18
README.md Normal file
View file

@ -0,0 +1,18 @@
# Pokémon Red
This is a disassembly of Pokémon Red.
It uses the following ROM as a base:
Pokemon Red (UE) [S][!].gb
(MD5: 3d45c1ee9abd5738df46d2bdda8b57dc)
To set up the repository, see [**INSTALL.md**](INSTALL.md).
## See also
* Disassembly of [**Pokémon Crystal**](https://github.com/kanzure/pokecrystal)
* irc: **nucleus.kafuka.org** [**#skeetendo**](https://kiwiirc.com/client/irc.nolimitzone.com/?#skeetendo)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,5 @@
; connection directions
EAST EQU 1
WEST EQU 2
SOUTH EQU 4
NORTH EQU 8

View file

@ -0,0 +1,4 @@
; Evolution types
EV_LEVEL EQU 1
EV_ITEM EQU 2
EV_TRADE EQU 3

View file

@ -0,0 +1,21 @@
; hardware registers, from the pandocs http://nocash.emubase.de/pandocs.htm
rJOYP EQU $FF00
rDIV EQU $FF04
rLCDC EQU $FF40
rSCY EQU $FF42
rSCX EQU $FF43
rBGP EQU $FF47
rOBP0 EQU $FF48
rOBP1 EQU $FF49
rWY EQU $FF4A
rWX EQU $FF4B
rIE EQU $FFFF
BTN_A EQU %00000001
BTN_B EQU %00000010
BTN_SELECT EQU %00000100
BTN_START EQU %00001000
BTN_RIGHT EQU %00010000
BTN_LEFT EQU %00100000
BTN_UP EQU %01000000
BTN_DOWN EQU %10000000

View file

@ -0,0 +1,139 @@
MASTER_BALL EQU $01
ULTRA_BALL EQU $02
GREAT_BALL EQU $03
POKE_BALL EQU $04
TOWN_MAP EQU $05
BICYCLE EQU $06
SURFBOARD EQU $07 ; buggy?
SAFARI_BALL EQU $08
POKEDEX EQU $09
MOON_STONE EQU $0A
ANTIDOTE EQU $0B
BURN_HEAL EQU $0C
ICE_HEAL EQU $0D
AWAKENING EQU $0E
PARLYZ_HEAL EQU $0F
FULL_RESTORE EQU $10
MAX_POTION EQU $11
HYPER_POTION EQU $12
SUPER_POTION EQU $13
POTION EQU $14
BOULDERBADGE EQU $15
CASCADEBADGE EQU $16
THUNDERBADGE EQU $17
RAINBOWBADGE EQU $18
SOULBADGE EQU $19
MARSHBADGE EQU $1A
VOLCANOBADGE EQU $1B
EARTHBADGE EQU $1C
ESCAPE_ROPE EQU $1D
REPEL EQU $1E
OLD_AMBER EQU $1F
FIRE_STONE EQU $20
THUNDER_STONE EQU $21
WATER_STONE EQU $22
HP_UP EQU $23
PROTEIN EQU $24
IRON EQU $25
CARBOS EQU $26
CALCIUM EQU $27
RARE_CANDY EQU $28
DOME_FOSSIL EQU $29
HELIX_FOSSIL EQU $2A
SECRET_KEY EQU $2B
; XXX ????? EQU $2C
BIKE_VOUCHER EQU $2D
X_ACCURACY EQU $2E
LEAF_STONE EQU $2F
CARD_KEY EQU $30
NUGGET EQU $31
;PP_UP EQU $32
POKE_DOLL EQU $33
FULL_HEAL EQU $34
REVIVE EQU $35
MAX_REVIVE EQU $36
GUARD_SPEC_ EQU $37
SUPER_REPEL EQU $38
MAX_REPEL EQU $39
DIRE_HIT EQU $3A
COIN EQU $3B
FRESH_WATER EQU $3C
SODA_POP EQU $3D
LEMONADE EQU $3E
S_S__TICKET EQU $3F
GOLD_TEETH EQU $40
X_ATTACK EQU $41
X_DEFEND EQU $42
X_SPEED EQU $43
X_SPECIAL EQU $44
COIN_CASE EQU $45
OAKS_PARCEL EQU $46
ITEMFINDER EQU $47
SILPH_SCOPE EQU $48
POKE_FLUTE EQU $49
LIFT_KEY EQU $4A
EXP__ALL EQU $4B
OLD_ROD EQU $4C
GOOD_ROD EQU $4D
SUPER_ROD EQU $4E
; XXX todo: compare this to $32
PP_UP EQU $4F
ETHER EQU $50
MAX_ETHER EQU $51
ELIXER EQU $52
MAX_ELIXER EQU $53
HM_01 EQU $C4
HM_02 EQU $C5
HM_03 EQU $C6
HM_04 EQU $C7
HM_05 EQU $C8
TM_01 EQU $C9
TM_02 EQU $CA
TM_03 EQU $CB
TM_04 EQU $CC
TM_05 EQU $CD
TM_06 EQU $CE
TM_07 EQU $CF
TM_08 EQU $D0
TM_09 EQU $D1
TM_10 EQU $D2
TM_11 EQU $D3
TM_12 EQU $D4
TM_13 EQU $D5
TM_14 EQU $D6
TM_15 EQU $D7
TM_16 EQU $D8
TM_17 EQU $D9
TM_18 EQU $DA
TM_19 EQU $DB
TM_20 EQU $DC
TM_21 EQU $DD
TM_22 EQU $DE
TM_23 EQU $DF
TM_24 EQU $E0
TM_25 EQU $E1
TM_26 EQU $E2
TM_27 EQU $E3
TM_28 EQU $E4
TM_29 EQU $E5
TM_30 EQU $E6
TM_31 EQU $E7
TM_32 EQU $E8
TM_33 EQU $E9
TM_34 EQU $EA
TM_35 EQU $EB
TM_36 EQU $EC
TM_37 EQU $ED
TM_38 EQU $EE
TM_39 EQU $EF
TM_40 EQU $F0
TM_41 EQU $F1
TM_42 EQU $F2
TM_43 EQU $F3
TM_44 EQU $F4
TM_45 EQU $F5
TM_46 EQU $F6
TM_47 EQU $F7
TM_48 EQU $F8
TM_49 EQU $F9
TM_50 EQU $FA

14
constants/list_constants.asm Executable file
View file

@ -0,0 +1,14 @@
; list menu ID's
PCPOKEMONLISTMENU EQU $00 ; PC pokemon withdraw/deposit lists
MOVESLISTMENU EQU $01 ; XXX where is this used?
PRICEDITEMLISTMENU EQU $02 ; Pokemart buy menu / Pokemart buy/sell choose quantity menu
ITEMLISTMENU EQU $03 ; Start menu Item menu / Pokemart sell menu
SPECIALLISTMENU EQU $04 ; list of special "items" e.g. floor list in elevators / list of badges
MONSTER_NAME EQU 1
MOVE_NAME EQU 2
; ???_NAME EQU 3
ITEM_NAME EQU 4
PLAYEROT_NAME EQU 5
ENEMYOT_NAME EQU 6
TRAINER_NAME EQU 7

249
constants/map_constants.asm Normal file
View file

@ -0,0 +1,249 @@
PALLET_TOWN EQU $00
VIRIDIAN_CITY EQU $01
PEWTER_CITY EQU $02
CERULEAN_CITY EQU $03
LAVENDER_TOWN EQU $04
VERMILION_CITY EQU $05
CELADON_CITY EQU $06
FUCHSIA_CITY EQU $07
CINNABAR_ISLAND EQU $08
INDIGO_PLATEAU EQU $09
SAFFRON_CITY EQU $0A
; unused EQU $0B
ROUTE_1 EQU $0C
ROUTE_2 EQU $0D
ROUTE_3 EQU $0E
ROUTE_4 EQU $0F
ROUTE_5 EQU $10
ROUTE_6 EQU $11
ROUTE_7 EQU $12
ROUTE_8 EQU $13
ROUTE_9 EQU $14
ROUTE_10 EQU $15
ROUTE_11 EQU $16
ROUTE_12 EQU $17
ROUTE_13 EQU $18
ROUTE_14 EQU $19
ROUTE_15 EQU $1A
ROUTE_16 EQU $1B
ROUTE_17 EQU $1C
ROUTE_18 EQU $1D
ROUTE_19 EQU $1E
ROUTE_20 EQU $1F
ROUTE_21 EQU $20
ROUTE_22 EQU $21
ROUTE_23 EQU $22
ROUTE_24 EQU $23
ROUTE_25 EQU $24
REDS_HOUSE_1F EQU $25
REDS_HOUSE_2F EQU $26
BLUES_HOUSE EQU $27
OAKS_LAB EQU $28
VIRIDIAN_POKECENTER EQU $29
VIRIDIAN_MART EQU $2A
VIRIDIAN_SCHOOL EQU $2B
VIRIDIAN_HOUSE EQU $2C
VIRIDIAN_GYM EQU $2D
DIGLETTS_CAVE_EXIT EQU $2E
VIRIDIAN_FOREST_EXIT EQU $2F
ROUTE_2_HOUSE EQU $30
ROUTE_2_GATE EQU $31
VIRIDIAN_FOREST_ENTRANCE EQU $32
VIRIDIAN_FOREST EQU $33
MUSEUM_1F EQU $34
MUSEUM_2F EQU $35
PEWTER_GYM EQU $36
PEWTER_HOUSE_1 EQU $37
PEWTER_MART EQU $38
PEWTER_HOUSE_2 EQU $39
PEWTER_POKECENTER EQU $3A
MT_MOON_1 EQU $3B
MT_MOON_2 EQU $3C
MT_MOON_3 EQU $3D
TRASHED_HOUSE EQU $3E
CERULEAN_HOUSE EQU $3F
CERULEAN_POKECENTER EQU $40
CERULEAN_GYM EQU $41
BIKE_SHOP EQU $42
CERULEAN_MART EQU $43
MT_MOON_POKECENTER EQU $44
;copy of TRASHED_HOUSE EQU $45
ROUTE_5_GATE EQU $46
PATH_ENTRANCE_ROUTE_5 EQU $47
DAYCAREM EQU $48
ROUTE_6_GATE EQU $49
PATH_ENTRANCE_ROUTE_6 EQU $4A
;copy of PATH_ENTRANCE_ROUTE_6 EQU $4B
ROUTE_7_GATE EQU $4C
PATH_ENTRANCE_ROUTE_7 EQU $4D
;copy of PATH_ENTRANCE_ROUTE_7 EQU $4E
ROUTE_8_GATE EQU $4F
PATH_ENTRANCE_ROUTE_8 EQU $50
ROCK_TUNNEL_POKECENTER EQU $51
ROCK_TUNNEL_1 EQU $52
POWER_PLANT EQU $53
ROUTE_11_GATE_1F EQU $54
DIGLETTS_CAVE_ENTRANCE EQU $55
ROUTE_11_GATE_2F EQU $56
ROUTE_12_GATE EQU $57
BILLS_HOUSE EQU $58
VERMILION_POKECENTER EQU $59
POKEMON_FAN_CLUB EQU $5A
VERMILION_MART EQU $5B
VERMILION_GYM EQU $5C
VERMILION_HOUSE_1 EQU $5D
VERMILION_DOCK EQU $5E
SS_ANNE_1 EQU $5F
SS_ANNE_2 EQU $60
SS_ANNE_3 EQU $61
SS_ANNE_4 EQU $62
SS_ANNE_5 EQU $63
SS_ANNE_6 EQU $64
SS_ANNE_7 EQU $65
SS_ANNE_8 EQU $66
SS_ANNE_9 EQU $67
SS_ANNE_10 EQU $68
;EQU $69
;EQU $6A
;EQU $6B
VICTORY_ROAD_1 EQU $6C
;EQU $6D
;EQU $6E
;EQU $6F
;EQU $70
LANCES_ROOM EQU $71
;EQU $72
;EQU $73
;EQU $74
;EQU $75
HALL_OF_FAME EQU $76
UNDERGROUND_PATH_NS EQU $77
CHAMPIONS_ROOM EQU $78
UNDERGROUND_PATH_WE EQU $79
CELADON_MART_1 EQU $7A
CELADON_MART_2 EQU $7B
CELADON_MART_3 EQU $7C
CELADON_MART_4 EQU $7D
CELADON_MART_ROOF EQU $7E
CELADON_MART_ELEVATOR EQU $7F
CELADON_MANSION_1 EQU $80
CELADON_MANSION_2 EQU $81
CELADON_MANSION_3 EQU $82
CELADON_MANSION_4 EQU $83
CELADON_MANSION_5 EQU $84
CELADON_POKECENTER EQU $85
CELADON_GYM EQU $86
GAME_CORNER EQU $87
CELADON_MART_5 EQU $88
CELADONPRIZE_ROOM EQU $89
CELADON_DINER EQU $8A
CELADON_HOUSE EQU $8B
CELADON_HOTEL EQU $8C
LAVENDER_POKECENTER EQU $8D
POKEMONTOWER_1 EQU $8E
POKEMONTOWER_2 EQU $8F
POKEMONTOWER_3 EQU $90
POKEMONTOWER_4 EQU $91
POKEMONTOWER_5 EQU $92
POKEMONTOWER_6 EQU $93
POKEMONTOWER_7 EQU $94
LAVENDER_HOUSE_1 EQU $95
LAVENDER_MART EQU $96
LAVENDER_HOUSE_2 EQU $97
FUCHSIA_MART EQU $98
FUCHSIA_HOUSE_1 EQU $99
FUCHSIA_POKECENTER EQU $9A
FUCHSIA_HOUSE_2 EQU $9B
SAFARIZONEENTRANCE EQU $9C
FUCHSIA_GYM EQU $9D
FUCHSIAMEETINGROOM EQU $9E
SEAFOAM_ISLANDS_2 EQU $9F
SEAFOAM_ISLANDS_3 EQU $A0
SEAFOAM_ISLANDS_4 EQU $A1
SEAFOAM_ISLANDS_5 EQU $A2
VERMILION_HOUSE_2 EQU $A3
FUCHSIA_HOUSE_3 EQU $A4
MANSION_1 EQU $A5
CINNABAR_GYM EQU $A6
CINNABAR_LAB_1 EQU $A7
CINNABAR_LAB_2 EQU $A8
CINNABAR_LAB_3 EQU $A9
CINNABAR_LAB_4 EQU $AA
CINNABAR_POKECENTER EQU $AB
CINNABAR_MART EQU $AC
;copy of CINNABAR_MART EQU $AD
INDIGO_PLATEAU_LOBBY EQU $AE
COPYCATS_HOUSE_1F EQU $AF
COPYCATS_HOUSE_2F EQU $B0
FIGHTINGDOJO EQU $B1
SAFFRON_GYM EQU $B2
SAFFRON_HOUSE_1 EQU $B3
SAFFRON_MART EQU $B4
SILPH_CO_1F EQU $B5
SAFFRON_POKECENTER EQU $B6
SAFFRON_HOUSE_2 EQU $B7
ROUTE_15_GATE_1F EQU $B8
ROUTE_15_GATE_2F EQU $B9
ROUTE_16_GATE_1F EQU $BA
ROUTE_16_GATE_2F EQU $BB
ROUTE_16_HOUSE EQU $BC
ROUTE_12_HOUSE EQU $BD
ROUTE_18_GATE_1F EQU $BE
ROUTE_18_GATE_2F EQU $BF
SEAFOAM_ISLANDS_1 EQU $C0
ROUTE_22_GATE EQU $C1
VICTORY_ROAD_2 EQU $C2
ROUTE_12_GATE_2F EQU $C3
VERMILION_HOUSE_3 EQU $C4
DIGLETTS_CAVE EQU $C5
VICTORY_ROAD_3 EQU $C6
ROCKET_HIDEOUT_1 EQU $C7
ROCKET_HIDEOUT_2 EQU $C8
ROCKET_HIDEOUT_3 EQU $C9
ROCKET_HIDEOUT_4 EQU $CA
ROCKET_HIDEOUT_ELEVATOR EQU $CB
;EQU $CC
;EQU $CD
;EQU $CE
SILPH_CO_2F EQU $CF
SILPH_CO_3F EQU $D0
SILPH_CO_4F EQU $D1
SILPH_CO_5F EQU $D2
SILPH_CO_6F EQU $D3
SILPH_CO_7F EQU $D4
SILPH_CO_8F EQU $D5
MANSION_2 EQU $D6
MANSION_3 EQU $D7
MANSION_4 EQU $D8
SAFARI_ZONE_EAST EQU $D9
SAFARI_ZONE_NORTH EQU $DA
SAFARI_ZONE_WEST EQU $DB
SAFARI_ZONE_CENTER EQU $DC
SAFARI_ZONE_REST_HOUSE_1 EQU $DD
SAFARI_ZONE_SECRET_HOUSE EQU $DE
SAFARI_ZONE_REST_HOUSE_2 EQU $DF
SAFARI_ZONE_REST_HOUSE_3 EQU $E0
SAFARI_ZONE_REST_HOUSE_4 EQU $E1
UNKNOWN_DUNGEON_2 EQU $E2
UNKNOWN_DUNGEON_3 EQU $E3
UNKNOWN_DUNGEON_1 EQU $E4
NAME_RATERS_HOUSE EQU $E5
CERULEAN_HOUSE_3 EQU $E6
;EQU $E7
ROCK_TUNNEL_2 EQU $E8
SILPH_CO_9F EQU $E9
SILPH_CO_10F EQU $EA
SILPH_CO_11F EQU $EB
SILPH_CO_ELEVATOR EQU $EC
;EQU $ED
;EQU $EE
BATTLE_CENTER EQU $EF
TRADE_CENTER EQU $F0
;EQU $F1
;EQU $F2
;EQU $F3
;EQU $F4
LORELEIS_ROOM EQU $F5
BRUNOS_ROOM EQU $F6
AGATHAS_ROOM EQU $F7
BEACH_HOUSE EQU $F8 ; Yellow only

View file

@ -0,0 +1,889 @@
; Map sizes (y, x)
; PalletTown_h map_id=0
PALLET_TOWN_HEIGHT EQU $09
PALLET_TOWN_WIDTH EQU $0a
; ViridianCity_h map_id=1
VIRIDIAN_CITY_HEIGHT EQU $12
VIRIDIAN_CITY_WIDTH EQU $14
; PewterCity_h map_id=2
PEWTER_CITY_HEIGHT EQU $12
PEWTER_CITY_WIDTH EQU $14
; CeruleanCity_h map_id=3
CERULEAN_CITY_HEIGHT EQU $12
CERULEAN_CITY_WIDTH EQU $14
; LavenderTown_h map_id=4
LAVENDER_TOWN_HEIGHT EQU $09
LAVENDER_TOWN_WIDTH EQU $0a
; VermilionCity_h map_id=5
VERMILION_CITY_HEIGHT EQU $12
VERMILION_CITY_WIDTH EQU $14
; CeladonCity_h map_id=6
CELADON_CITY_HEIGHT EQU $12
CELADON_CITY_WIDTH EQU $19
; FuchsiaCity_h map_id=7
FUCHSIA_CITY_HEIGHT EQU $12
FUCHSIA_CITY_WIDTH EQU $14
; CinnabarIsland_h map_id=8
CINNABAR_ISLAND_HEIGHT EQU $09
CINNABAR_ISLAND_WIDTH EQU $0a
; IndigoPlateau_h map_id=9
INDIGO_PLATEAU_HEIGHT EQU $09
INDIGO_PLATEAU_WIDTH EQU $0a
; SaffronCity_h map_id=10
SAFFRON_CITY_HEIGHT EQU $12
SAFFRON_CITY_WIDTH EQU $14
; Route1_h map_id=12
ROUTE_1_HEIGHT EQU $12
ROUTE_1_WIDTH EQU $0a
; Route2_h map_id=13
ROUTE_2_HEIGHT EQU $24
ROUTE_2_WIDTH EQU $0a
; Route3_h map_id=14
ROUTE_3_HEIGHT EQU $09
ROUTE_3_WIDTH EQU $23
; Route4_h map_id=15
ROUTE_4_HEIGHT EQU $09
ROUTE_4_WIDTH EQU $2d
; Route5_h map_id=16
ROUTE_5_HEIGHT EQU $12
ROUTE_5_WIDTH EQU $0a
; Route6_h map_id=17
ROUTE_6_HEIGHT EQU $12
ROUTE_6_WIDTH EQU $0a
; Route7_h map_id=18
ROUTE_7_HEIGHT EQU $09
ROUTE_7_WIDTH EQU $0a
; Route8_h map_id=19
ROUTE_8_HEIGHT EQU $09
ROUTE_8_WIDTH EQU $1e
; Route9_h map_id=20
ROUTE_9_HEIGHT EQU $09
ROUTE_9_WIDTH EQU $1e
; Route10_h map_id=21
ROUTE_10_HEIGHT EQU $24
ROUTE_10_WIDTH EQU $0a
; Route11_h map_id=22
ROUTE_11_HEIGHT EQU $09
ROUTE_11_WIDTH EQU $1e
; Route12_h map_id=23
ROUTE_12_HEIGHT EQU $36
ROUTE_12_WIDTH EQU $0a
; Route13_h map_id=24
ROUTE_13_HEIGHT EQU $09
ROUTE_13_WIDTH EQU $1e
; Route14_h map_id=25
ROUTE_14_HEIGHT EQU $1b
ROUTE_14_WIDTH EQU $0a
; Route15_h map_id=26
ROUTE_15_HEIGHT EQU $09
ROUTE_15_WIDTH EQU $1e
; Route16_h map_id=27
ROUTE_16_HEIGHT EQU $09
ROUTE_16_WIDTH EQU $14
; Route17_h map_id=28
ROUTE_17_HEIGHT EQU $48
ROUTE_17_WIDTH EQU $0a
; Route18_h map_id=29
ROUTE_18_HEIGHT EQU $09
ROUTE_18_WIDTH EQU $19
; Route19_h map_id=30
ROUTE_19_HEIGHT EQU $1b
ROUTE_19_WIDTH EQU $0a
; Route20_h map_id=31
ROUTE_20_HEIGHT EQU $09
ROUTE_20_WIDTH EQU $32
; Route21_h map_id=32
ROUTE_21_HEIGHT EQU $2d
ROUTE_21_WIDTH EQU $0a
; Route22_h map_id=33
ROUTE_22_HEIGHT EQU $09
ROUTE_22_WIDTH EQU $14
; Route23_h map_id=34
ROUTE_23_HEIGHT EQU $48
ROUTE_23_WIDTH EQU $0a
; Route24_h map_id=35
ROUTE_24_HEIGHT EQU $12
ROUTE_24_WIDTH EQU $0a
; Route25_h map_id=36
ROUTE_25_HEIGHT EQU $09
ROUTE_25_WIDTH EQU $1e
; RedsHouse1F_h map_id=37
REDS_HOUSE_1F_HEIGHT EQU $04
REDS_HOUSE_1F_WIDTH EQU $04
; RedsHouse2F_h map_id=38
REDS_HOUSE_2F_HEIGHT EQU $04
REDS_HOUSE_2F_WIDTH EQU $04
; BluesHouse_h map_id=39
BLUES_HOUSE_HEIGHT EQU $04
BLUES_HOUSE_WIDTH EQU $04
; OaksLab_h map_id=40
OAKS_LAB_HEIGHT EQU $06
OAKS_LAB_WIDTH EQU $05
; ViridianPokeCenter_h map_id=41
VIRIDIAN_POKECENTER_HEIGHT EQU $04
VIRIDIAN_POKECENTER_WIDTH EQU $07
; ViridianMart_h map_id=42
VIRIDIAN_MART_HEIGHT EQU $04
VIRIDIAN_MART_WIDTH EQU $04
; School_h map_id=43
VIRIDIAN_SCHOOL_HEIGHT EQU $04
VIRIDIAN_SCHOOL_WIDTH EQU $04
; ViridianHouse_h map_id=44
VIRIDIAN_HOUSE_HEIGHT EQU $04
VIRIDIAN_HOUSE_WIDTH EQU $04
; ViridianGym_h map_id=45
VIRIDIAN_GYM_HEIGHT EQU $09
VIRIDIAN_GYM_WIDTH EQU $0a
; DiglettsCaveRoute2_h map_id=46
DIGLETTS_CAVE_EXIT_HEIGHT EQU $04
DIGLETTS_CAVE_EXIT_WIDTH EQU $04
; ViridianForestexit_h map_id=47
VIRIDIAN_FOREST_EXIT_HEIGHT EQU $04
VIRIDIAN_FOREST_EXIT_WIDTH EQU $05
; Route2House_h map_id=48
ROUTE_2_HOUSE_HEIGHT EQU $04
ROUTE_2_HOUSE_WIDTH EQU $04
; Route2Gate_h map_id=49
ROUTE_2_GATE_HEIGHT EQU $04
ROUTE_2_GATE_WIDTH EQU $05
; ViridianForestEntrance_h map_id=50
VIRIDIAN_FOREST_ENTRANCE_HEIGHT EQU $04
VIRIDIAN_FOREST_ENTRANCE_WIDTH EQU $05
; ViridianForest_h map_id=51
VIRIDIAN_FOREST_HEIGHT EQU $18
VIRIDIAN_FOREST_WIDTH EQU $11
; MuseumF1_h map_id=52
MUSEUM_1F_HEIGHT EQU $04
MUSEUM_1F_WIDTH EQU $0a
; MuseumF2_h map_id=53
MUSEUM_2F_HEIGHT EQU $04
MUSEUM_2F_WIDTH EQU $07
; PewterGym_h map_id=54
PEWTER_GYM_HEIGHT EQU $07
PEWTER_GYM_WIDTH EQU $05
; PewterHouse1_h map_id=55
PEWTER_HOUSE_1_HEIGHT EQU $04
PEWTER_HOUSE_1_WIDTH EQU $04
; PewterMart_h map_id=56
PEWTER_MART_HEIGHT EQU $04
PEWTER_MART_WIDTH EQU $04
; PewterHouse2_h map_id=57
PEWTER_HOUSE_2_HEIGHT EQU $04
PEWTER_HOUSE_2_WIDTH EQU $04
; PewterPokecenter_h map_id=58
PEWTER_POKECENTER_HEIGHT EQU $04
PEWTER_POKECENTER_WIDTH EQU $07
; MtMoon1_h map_id=59
MT_MOON_1_HEIGHT EQU $12
MT_MOON_1_WIDTH EQU $14
; MtMoon2_h map_id=60
MT_MOON_2_HEIGHT EQU $0e
MT_MOON_2_WIDTH EQU $0e
; MtMoon3_h map_id=61
MT_MOON_3_HEIGHT EQU $12
MT_MOON_3_WIDTH EQU $14
; CeruleanHouseTrashed_h map_id=62
TRASHED_HOUSE_HEIGHT EQU $04
TRASHED_HOUSE_WIDTH EQU $04
; CeruleanHouse_h map_id=63
CERULEAN_HOUSE_HEIGHT EQU $04
CERULEAN_HOUSE_WIDTH EQU $04
; CeruleanPokecenter_h map_id=64
CERULEAN_POKECENTER_HEIGHT EQU $04
CERULEAN_POKECENTER_WIDTH EQU $07
; CeruleanGym_h map_id=65
CERULEAN_GYM_HEIGHT EQU $07
CERULEAN_GYM_WIDTH EQU $05
; BikeShop_h map_id=66
BIKE_SHOP_HEIGHT EQU $04
BIKE_SHOP_WIDTH EQU $04
; CeruleanMart_h map_id=67
CERULEAN_MART_HEIGHT EQU $04
CERULEAN_MART_WIDTH EQU $04
; MtMoonPokecenter_h map_id=68
MT_MOON_POKECENTER_HEIGHT EQU $04
MT_MOON_POKECENTER_WIDTH EQU $07
; Route5Gate_h map_id=70
ROUTE_5_GATE_HEIGHT EQU $03
ROUTE_5_GATE_WIDTH EQU $04
; UndergroundTunnelEntranceRoute5_h map_id=71
PATH_ENTRANCE_ROUTE_5_HEIGHT EQU $04
PATH_ENTRANCE_ROUTE_5_WIDTH EQU $04
; DayCareM_h map_id=72
DAYCAREM_HEIGHT EQU $04
DAYCAREM_WIDTH EQU $04
; Route6Gate_h map_id=73
ROUTE_6_GATE_HEIGHT EQU $03
ROUTE_6_GATE_WIDTH EQU $04
; UndergroundTunnelEntranceRoute6_h map_id=74
PATH_ENTRANCE_ROUTE_6_HEIGHT EQU $04
PATH_ENTRANCE_ROUTE_6_WIDTH EQU $04
; Route7Gate_h map_id=76
ROUTE_7_GATE_HEIGHT EQU $04
ROUTE_7_GATE_WIDTH EQU $03
; UndergroundPathEntranceRoute7_h map_id=77
PATH_ENTRANCE_ROUTE_7_HEIGHT EQU $04
PATH_ENTRANCE_ROUTE_7_WIDTH EQU $04
; Route8Gate_h map_id=79
ROUTE_8_GATE_HEIGHT EQU $04
ROUTE_8_GATE_WIDTH EQU $03
; UndergroundPathEntranceRoute8_h map_id=80
PATH_ENTRANCE_ROUTE_8_HEIGHT EQU $04
PATH_ENTRANCE_ROUTE_8_WIDTH EQU $04
; RockTunnelPokecenter_h map_id=81
ROCK_TUNNEL_POKECENTER_HEIGHT EQU $04
ROCK_TUNNEL_POKECENTER_WIDTH EQU $07
; RockTunnel1_h map_id=82
ROCK_TUNNEL_1_HEIGHT EQU $12
ROCK_TUNNEL_1_WIDTH EQU $14
; PowerPlant_h map_id=83
POWER_PLANT_HEIGHT EQU $12
POWER_PLANT_WIDTH EQU $14
; Route11Gate_h map_id=84
ROUTE_11_GATE_1F_HEIGHT EQU $05
ROUTE_11_GATE_1F_WIDTH EQU $04
; DiglettsCaveEntranceRoute11_h map_id=85
DIGLETTS_CAVE_ENTRANCE_HEIGHT EQU $04
DIGLETTS_CAVE_ENTRANCE_WIDTH EQU $04
; Route11GateUpstairs_h map_id=86
ROUTE_11_GATE_2F_HEIGHT EQU $04
ROUTE_11_GATE_2F_WIDTH EQU $04
; Route12Gate_h map_id=87
ROUTE_12_GATE_HEIGHT EQU $04
ROUTE_12_GATE_WIDTH EQU $05
; BillsHouse_h map_id=88
BILLS_HOUSE_HEIGHT EQU $04
BILLS_HOUSE_WIDTH EQU $04
; VermilionPokecenter_h map_id=89
VERMILION_POKECENTER_HEIGHT EQU $04
VERMILION_POKECENTER_WIDTH EQU $07
; FanClub_h map_id=90
POKEMON_FAN_CLUB_HEIGHT EQU $04
POKEMON_FAN_CLUB_WIDTH EQU $04
; VermilionMart_h map_id=91
VERMILION_MART_HEIGHT EQU $04
VERMILION_MART_WIDTH EQU $04
; VermilionGym_h map_id=92
VERMILION_GYM_HEIGHT EQU $09
VERMILION_GYM_WIDTH EQU $05
; VermilionHouse1_h map_id=93
VERMILION_HOUSE_1_HEIGHT EQU $04
VERMILION_HOUSE_1_WIDTH EQU $04
; VermilionDock_h map_id=94
VERMILION_DOCK_HEIGHT EQU $06
VERMILION_DOCK_WIDTH EQU $0e
; SSAnne1_h map_id=95
SS_ANNE_1_HEIGHT EQU $09
SS_ANNE_1_WIDTH EQU $14
; SSAnne2_h map_id=96
SS_ANNE_2_HEIGHT EQU $09
SS_ANNE_2_WIDTH EQU $14
; SSAnne3_h map_id=97
SS_ANNE_3_HEIGHT EQU $03
SS_ANNE_3_WIDTH EQU $0a
; SSAnne4_h map_id=98
SS_ANNE_4_HEIGHT EQU $04
SS_ANNE_4_WIDTH EQU $0f
; SSAnne5_h map_id=99
SS_ANNE_5_HEIGHT EQU $07
SS_ANNE_5_WIDTH EQU $0a
; SSAnne6_h map_id=100
SS_ANNE_6_HEIGHT EQU $08
SS_ANNE_6_WIDTH EQU $07
; SSAnne7_h map_id=101
SS_ANNE_7_HEIGHT EQU $04
SS_ANNE_7_WIDTH EQU $03
; SSAnne8_h map_id=102
SS_ANNE_8_HEIGHT EQU $08
SS_ANNE_8_WIDTH EQU $0c
; SSAnne9_h map_id=103
SS_ANNE_9_HEIGHT EQU $08
SS_ANNE_9_WIDTH EQU $0c
; SSAnne10_h map_id=104
SS_ANNE_10_HEIGHT EQU $08
SS_ANNE_10_WIDTH EQU $0c
; VictoryRoad1_h map_id=108
VICTORY_ROAD_1_HEIGHT EQU $09
VICTORY_ROAD_1_WIDTH EQU $0a
; Lance_h map_id=113
LANCES_ROOM_HEIGHT EQU $0d
LANCES_ROOM_WIDTH EQU $0d
; HallofFameRoom_h map_id=118
HALL_OF_FAME_HEIGHT EQU $04
HALL_OF_FAME_WIDTH EQU $05
; UndergroundPathNS_h map_id=119
UNDERGROUND_PATH_NS_HEIGHT EQU $18
UNDERGROUND_PATH_NS_WIDTH EQU $04
; Gary_h map_id=120
CHAMPIONS_ROOM_HEIGHT EQU $04
CHAMPIONS_ROOM_WIDTH EQU $04
; UndergroundPathWE_h map_id=121
UNDERGROUND_PATH_WE_HEIGHT EQU $04
UNDERGROUND_PATH_WE_WIDTH EQU $19
; CeladonMart1_h map_id=122
CELADON_MART_1_HEIGHT EQU $04
CELADON_MART_1_WIDTH EQU $0a
; CeladonMart2_h map_id=123
CELADON_MART_2_HEIGHT EQU $04
CELADON_MART_2_WIDTH EQU $0a
; CeladonMart3_h map_id=124
CELADON_MART_3_HEIGHT EQU $04
CELADON_MART_3_WIDTH EQU $0a
; CeladonMart4_h map_id=125
CELADON_MART_4_HEIGHT EQU $04
CELADON_MART_4_WIDTH EQU $0a
; CeladonMartRoof_h map_id=126
CELADON_MART_ROOF_HEIGHT EQU $04
CELADON_MART_ROOF_WIDTH EQU $0a
; CeladonMartElevator_h map_id=127
CELADON_MART_ELEVATOR_HEIGHT EQU $02
CELADON_MART_ELEVATOR_WIDTH EQU $02
; CeladonMansion1_h map_id=128
CELADON_MANSION_1_HEIGHT EQU $06
CELADON_MANSION_1_WIDTH EQU $04
; CeladonMansion2_h map_id=129
CELADON_MANSION_2_HEIGHT EQU $06
CELADON_MANSION_2_WIDTH EQU $04
; CeladonMansion3_h map_id=130
CELADON_MANSION_3_HEIGHT EQU $06
CELADON_MANSION_3_WIDTH EQU $04
; CeladonMansion4_h map_id=131
CELADON_MANSION_4_HEIGHT EQU $06
CELADON_MANSION_4_WIDTH EQU $04
; CeladonMansion5_h map_id=132
CELADON_MANSION_5_HEIGHT EQU $04
CELADON_MANSION_5_WIDTH EQU $04
; CeladonPokecenter_h map_id=133
CELADON_POKECENTER_HEIGHT EQU $04
CELADON_POKECENTER_WIDTH EQU $07
; CeladonGym_h map_id=134
CELADON_GYM_HEIGHT EQU $09
CELADON_GYM_WIDTH EQU $05
; CeladonGameCorner_h map_id=135
GAME_CORNER_HEIGHT EQU $09
GAME_CORNER_WIDTH EQU $0a
; CeladonMart5_h map_id=136
CELADON_MART_5_HEIGHT EQU $04
CELADON_MART_5_WIDTH EQU $0a
; CeladonPrizeRoom_h map_id=137
CELADONPRIZE_ROOM_HEIGHT EQU $04
CELADONPRIZE_ROOM_WIDTH EQU $05
; CeladonDiner_h map_id=138
CELADON_DINER_HEIGHT EQU $04
CELADON_DINER_WIDTH EQU $05
; CeladonHouse_h map_id=139
CELADON_HOUSE_HEIGHT EQU $04
CELADON_HOUSE_WIDTH EQU $04
; CeladonHotel_h map_id=140
CELADONHOTEL_HEIGHT EQU $04
CELADONHOTEL_WIDTH EQU $07
; LavenderPokecenter_h map_id=141
LAVENDER_POKECENTER_HEIGHT EQU $04
LAVENDER_POKECENTER_WIDTH EQU $07
; PokemonTower1_h map_id=142
POKEMONTOWER_1_HEIGHT EQU $09
POKEMONTOWER_1_WIDTH EQU $0a
; PokemonTower2_h map_id=143
POKEMONTOWER_2_HEIGHT EQU $09
POKEMONTOWER_2_WIDTH EQU $0a
; PokemonTower3_h map_id=144
POKEMONTOWER_3_HEIGHT EQU $09
POKEMONTOWER_3_WIDTH EQU $0a
; PokemonTower4_h map_id=145
POKEMONTOWER_4_HEIGHT EQU $09
POKEMONTOWER_4_WIDTH EQU $0a
; PokemonTower5_h map_id=146
POKEMONTOWER_5_HEIGHT EQU $09
POKEMONTOWER_5_WIDTH EQU $0a
; PokemonTower6_h map_id=147
POKEMONTOWER_6_HEIGHT EQU $09
POKEMONTOWER_6_WIDTH EQU $0a
; PokemonTower7_h map_id=148
POKEMONTOWER_7_HEIGHT EQU $09
POKEMONTOWER_7_WIDTH EQU $0a
; LavenderHouse1_h map_id=149
LAVENDER_HOUSE_1_HEIGHT EQU $04
LAVENDER_HOUSE_1_WIDTH EQU $04
; LavenderMart_h map_id=150
LAVENDER_MART_HEIGHT EQU $04
LAVENDER_MART_WIDTH EQU $04
; LavenderHouse2_h map_id=151
LAVENDER_HOUSE_2_HEIGHT EQU $04
LAVENDER_HOUSE_2_WIDTH EQU $04
; FuchsiaMart_h map_id=152
FUCHSIA_MART_HEIGHT EQU $04
FUCHSIA_MART_WIDTH EQU $04
; FuchsiaHouse1_h map_id=153
FUCHSIA_HOUSE_1_HEIGHT EQU $04
FUCHSIA_HOUSE_1_WIDTH EQU $04
; FuchsiaPokecenter_h map_id=154
FUCHSIA_POKECENTER_HEIGHT EQU $04
FUCHSIA_POKECENTER_WIDTH EQU $07
; FuchsiaHouse2_h map_id=155
FUCHSIA_HOUSE_2_HEIGHT EQU $04
FUCHSIA_HOUSE_2_WIDTH EQU $05
; SafariZoneEntrance_h map_id=156
SAFARIZONEENTRANCE_HEIGHT EQU $03
SAFARIZONEENTRANCE_WIDTH EQU $04
; FuchsiaGym_h map_id=157
FUCHSIA_GYM_HEIGHT EQU $09
FUCHSIA_GYM_WIDTH EQU $05
; FuchsiaMeetingRoom_h map_id=158
FUCHSIAMEETINGROOM_HEIGHT EQU $04
FUCHSIAMEETINGROOM_WIDTH EQU $07
; SeafoamIslands2_h map_id=159
SEAFOAM_ISLANDS_2_HEIGHT EQU $09
SEAFOAM_ISLANDS_2_WIDTH EQU $0f
; SeafoamIslands3_h map_id=160
SEAFOAM_ISLANDS_3_HEIGHT EQU $09
SEAFOAM_ISLANDS_3_WIDTH EQU $0f
; SeafoamIslands4_h map_id=161
SEAFOAM_ISLANDS_4_HEIGHT EQU $09
SEAFOAM_ISLANDS_4_WIDTH EQU $0f
; SeafoamIslands5_h map_id=162
SEAFOAM_ISLANDS_5_HEIGHT EQU $09
SEAFOAM_ISLANDS_5_WIDTH EQU $0f
; VermilionHouse2_h map_id=163
VERMILION_HOUSE_2_HEIGHT EQU $04
VERMILION_HOUSE_2_WIDTH EQU $04
; FuchsiaHouse3_h map_id=164
FUCHSIA_HOUSE_3_HEIGHT EQU $04
FUCHSIA_HOUSE_3_WIDTH EQU $04
; Mansion1_h map_id=165
MANSION_1_HEIGHT EQU $0e
MANSION_1_WIDTH EQU $0f
; CinnabarGym_h map_id=166
CINNABAR_GYM_HEIGHT EQU $09
CINNABAR_GYM_WIDTH EQU $0a
; Lab1_h map_id=167
CINNABAR_LAB_1_HEIGHT EQU $04
CINNABAR_LAB_1_WIDTH EQU $09
; Lab2_h map_id=168
CINNABAR_LAB_2_HEIGHT EQU $04
CINNABAR_LAB_2_WIDTH EQU $04
; Lab3_h map_id=169
CINNABAR_LAB_3_HEIGHT EQU $04
CINNABAR_LAB_3_WIDTH EQU $04
; Lab4_h map_id=170
CINNABAR_LAB_4_HEIGHT EQU $04
CINNABAR_LAB_4_WIDTH EQU $04
; CinnabarPokecenter_h map_id=171
CINNABAR_POKECENTER_HEIGHT EQU $04
CINNABAR_POKECENTER_WIDTH EQU $07
; CinnabarMart_h map_id=172
CINNABAR_MART_HEIGHT EQU $04
CINNABAR_MART_WIDTH EQU $04
; IndigoPlateauLobby_h map_id=174
INDIGO_PLATEAU_LOBBY_HEIGHT EQU $06
INDIGO_PLATEAU_LOBBY_WIDTH EQU $08
; CopycatsHouseF1_h map_id=175
COPYCATS_HOUSE_1F_HEIGHT EQU $04
COPYCATS_HOUSE_1F_WIDTH EQU $04
; CopycatsHouseF2_h map_id=176
COPYCATS_HOUSE_2F_HEIGHT EQU $04
COPYCATS_HOUSE_2F_WIDTH EQU $04
; FightingDojo_h map_id=177
FIGHTINGDOJO_HEIGHT EQU $06
FIGHTINGDOJO_WIDTH EQU $05
; SaffronGym_h map_id=178
SAFFRON_GYM_HEIGHT EQU $09
SAFFRON_GYM_WIDTH EQU $0a
; SaffronHouse1_h map_id=179
SAFFRON_HOUSE_1_HEIGHT EQU $04
SAFFRON_HOUSE_1_WIDTH EQU $04
; SaffronMart_h map_id=180
SAFFRON_MART_HEIGHT EQU $04
SAFFRON_MART_WIDTH EQU $04
; SilphCo1_h map_id=181
SILPH_CO_1F_HEIGHT EQU $09
SILPH_CO_1F_WIDTH EQU $0f
; SaffronPokecenter_h map_id=182
SAFFRON_POKECENTER_HEIGHT EQU $04
SAFFRON_POKECENTER_WIDTH EQU $07
; SaffronHouse2_h map_id=183
SAFFRON_HOUSE_2_HEIGHT EQU $04
SAFFRON_HOUSE_2_WIDTH EQU $04
; Route15Gate1F_h map_id=184
ROUTE_15_GATE_1F_HEIGHT EQU $05
ROUTE_15_GATE_1F_WIDTH EQU $04
; Route15GateUpstairs_h map_id=185
ROUTE_15_GATE_2F_HEIGHT EQU 4
ROUTE_15_GATE_2F_WIDTH EQU 4
; Route16GateMap_h map_id=186
ROUTE_16_GATE_1F_HEIGHT EQU $07
ROUTE_16_GATE_1F_WIDTH EQU $04
; Route16GateUpstairs_h map_id=187
ROUTE_16_GATE_2F_HEIGHT EQU $04
ROUTE_16_GATE_2F_WIDTH EQU $04
; Route16House_h map_id=188
ROUTE_16_HOUSE_HEIGHT EQU $04
ROUTE_16_HOUSE_WIDTH EQU $04
; Route12House_h map_id=189
ROUTE_12_HOUSE_HEIGHT EQU $04
ROUTE_12_HOUSE_WIDTH EQU $04
; Route18Gate_h map_id=190
ROUTE_18_GATE_1F_HEIGHT EQU $05
ROUTE_18_GATE_1F_WIDTH EQU $04
; Route18GateHeader_h map_id=191
ROUTE_18_GATE_2F_HEIGHT EQU $04
ROUTE_18_GATE_2F_WIDTH EQU $04
; SeafoamIslands1_h map_id=192
SEAFOAM_ISLANDS_1_HEIGHT EQU $09
SEAFOAM_ISLANDS_1_WIDTH EQU $0f
; Route22Gate_h map_id=193
ROUTE_22_GATE_HEIGHT EQU $04
ROUTE_22_GATE_WIDTH EQU $05
; VictoryRoad2_h map_id=194
VICTORY_ROAD_2_HEIGHT EQU $09
VICTORY_ROAD_2_WIDTH EQU $0f
; Route12GateUpstairs_h map_id=195
ROUTE_12_GATE_2F_HEIGHT EQU $04
ROUTE_12_GATE_2F_WIDTH EQU $04
; VermilionHouse3_h map_id=196
VERMILION_HOUSE_3_HEIGHT EQU $04
VERMILION_HOUSE_3_WIDTH EQU $04
; DiglettsCave_h map_id=197
DIGLETTS_CAVE_HEIGHT EQU $12
DIGLETTS_CAVE_WIDTH EQU $14
; VictoryRoad3_h map_id=198
VICTORY_ROAD_3_HEIGHT EQU $09
VICTORY_ROAD_3_WIDTH EQU $0f
; RocketHideout1_h map_id=199
ROCKET_HIDEOUT_1_HEIGHT EQU $0e
ROCKET_HIDEOUT_1_WIDTH EQU $0f
; RocketHideout2_h map_id=200
ROCKET_HIDEOUT_2_HEIGHT EQU $0e
ROCKET_HIDEOUT_2_WIDTH EQU $0f
; RocketHideout3_h map_id=201
ROCKET_HIDEOUT_3_HEIGHT EQU $0e
ROCKET_HIDEOUT_3_WIDTH EQU $0f
; RocketHideout4_h map_id=202
ROCKET_HIDEOUT_4_HEIGHT EQU $0c
ROCKET_HIDEOUT_4_WIDTH EQU $0f
; RocketHideoutElevator_h map_id=203
ROCKET_HIDEOUT_ELEVATOR_HEIGHT EQU $04
ROCKET_HIDEOUT_ELEVATOR_WIDTH EQU $03
; SilphCo2_h map_id=207
SILPH_CO_2F_HEIGHT EQU $09
SILPH_CO_2F_WIDTH EQU $0f
; SilphCo3_h map_id=208
SILPH_CO_3F_HEIGHT EQU $09
SILPH_CO_3F_WIDTH EQU $0f
; SilphCo4_h map_id=209
SILPH_CO_4F_HEIGHT EQU $09
SILPH_CO_4F_WIDTH EQU $0f
; SilphCo5_h map_id=210
SILPH_CO_5F_HEIGHT EQU $09
SILPH_CO_5F_WIDTH EQU $0f
; SilphCo6_h map_id=211
SILPH_CO_6F_HEIGHT EQU $09
SILPH_CO_6F_WIDTH EQU $0d
; SilphCo7_h map_id=212
SILPH_CO_7F_HEIGHT EQU $09
SILPH_CO_7F_WIDTH EQU $0d
; SilphCo8_h map_id=213
SILPH_CO_8F_HEIGHT EQU $09
SILPH_CO_8F_WIDTH EQU $0d
; Mansion2_h map_id=214
MANSION_2_HEIGHT EQU $0e
MANSION_2_WIDTH EQU $0f
; Mansion3_h map_id=215
MANSION_3_HEIGHT EQU $09
MANSION_3_WIDTH EQU $0f
; Mansion4_h map_id=216
MANSION_4_HEIGHT EQU $0e
MANSION_4_WIDTH EQU $0f
; SafariZoneEast_h map_id=217
SAFARI_ZONE_EAST_HEIGHT EQU $0d
SAFARI_ZONE_EAST_WIDTH EQU $0f
; SafariZoneNorth_h map_id=218
SAFARI_ZONE_NORTH_HEIGHT EQU $12
SAFARI_ZONE_NORTH_WIDTH EQU $14
; SafariZoneWest_h map_id=219
SAFARI_ZONE_WEST_HEIGHT EQU $0d
SAFARI_ZONE_WEST_WIDTH EQU $0f
; SafariZoneCenter_h map_id=220
SAFARI_ZONE_CENTER_HEIGHT EQU $0d
SAFARI_ZONE_CENTER_WIDTH EQU $0f
; SafariZoneRestHouse1_h map_id=221
SAFARI_ZONE_REST_HOUSE_1_HEIGHT EQU $04
SAFARI_ZONE_REST_HOUSE_1_WIDTH EQU $04
; SafariZoneSecretHouse_h map_id=222
SAFARI_ZONE_SECRET_HOUSE_HEIGHT EQU $04
SAFARI_ZONE_SECRET_HOUSE_WIDTH EQU $04
; SafariZoneRestHouse2_h map_id=223
SAFARI_ZONE_REST_HOUSE_2_HEIGHT EQU $04
SAFARI_ZONE_REST_HOUSE_2_WIDTH EQU $04
; SafariZoneRestHouse3_h map_id=224
SAFARI_ZONE_REST_HOUSE_3_HEIGHT EQU $04
SAFARI_ZONE_REST_HOUSE_3_WIDTH EQU $04
; SafariZoneRestHouse4_h map_id=225
SAFARI_ZONE_REST_HOUSE_4_HEIGHT EQU $04
SAFARI_ZONE_REST_HOUSE_4_WIDTH EQU $04
; UnknownDungeon2_h map_id=226
UNKNOWN_DUNGEON_2_HEIGHT EQU $09
UNKNOWN_DUNGEON_2_WIDTH EQU $0f
; UnknownDungeon3_h map_id=227
UNKNOWN_DUNGEON_3_HEIGHT EQU $09
UNKNOWN_DUNGEON_3_WIDTH EQU $0f
; UnknownDungeon1_h map_id=228
UNKNOWN_DUNGEON_1_HEIGHT EQU $09
UNKNOWN_DUNGEON_1_WIDTH EQU $0f
; NameRater_h map_id=229
NAME_RATERS_HOUSE_HEIGHT EQU $04
NAME_RATERS_HOUSE_WIDTH EQU $04
; CeruleanHouse2_h map_id=230
CERULEAN_HOUSE_2_HEIGHT EQU $04
CERULEAN_HOUSE_2_WIDTH EQU $04
; RockTunnel2_h map_id=232
ROCK_TUNNEL_2_HEIGHT EQU $12
ROCK_TUNNEL_2_WIDTH EQU $14
; SilphCo9_h map_id=233
SILPH_CO_9F_HEIGHT EQU $09
SILPH_CO_9F_WIDTH EQU $0d
; SilphCo10_h map_id=234
SILPH_CO_10F_HEIGHT EQU $09
SILPH_CO_10F_WIDTH EQU $08
; SilphCo11_h map_id=235
SILPH_CO_11F_HEIGHT EQU $09
SILPH_CO_11F_WIDTH EQU $09
; SilphCoElevator_h map_id=236
SILPH_CO_ELEVATOR_HEIGHT EQU $02
SILPH_CO_ELEVATOR_WIDTH EQU $02
; BattleCenterM_h map_id=239
BATTLE_CENTER_HEIGHT EQU $04
BATTLE_CENTER_WIDTH EQU $05
; TradeCenterM_h map_id=240
TRADE_CENTER_HEIGHT EQU $04
TRADE_CENTER_WIDTH EQU $05
; Lorelei_h map_id=245
LORELEIS_ROOM_HEIGHT EQU $06
LORELEIS_ROOM_WIDTH EQU $05
; Bruno_h map_id=246
BRUNOS_ROOM_HEIGHT EQU $06
BRUNOS_ROOM_WIDTH EQU $05
; Agatha_h map_id=247
AGATHAS_ROOM_HEIGHT EQU $06
AGATHAS_ROOM_WIDTH EQU $05

View file

@ -0,0 +1,179 @@
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
; these do double duty as animation identifiers
SHOWPIC_ANIM EQU $A6 ; redraw monster pic
XSTATITEM_ANIM EQU $AE ; use X Attack/Defense/Speed/Special
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

View file

@ -0,0 +1,76 @@
; tentative move effect constants
; {stat}_(UP|DOWN)(1|2) means that the move raises the user's (or lowers the target's) corresponding stat modifier by 1 (or 2) stages
; {status condition}_side_effect means that the move has a side chance of causing that condition
; {status condition}_effect means that the move causes the status condition every time it hits the target
NO_ADDITIONAL_EFFECT EQU $00
POISON_SIDE_EFFECT1 EQU $02
DRAIN_HP_EFFECT EQU $03
BURN_SIDE_EFFECT1 EQU $04
FREEZE_SIDE_EFFECT EQU $05
PARALYZE_SIDE_EFFECT1 EQU $06
EXPLODE_EFFECT EQU $07 ; Explosion, Self Destruct
DREAM_EATER_EFFECT EQU $08
MIRROR_MOVE_EFFECT EQU $09
ATTACK_UP1_EFFECT EQU $0A
DEFENSE_UP1_EFFECT EQU $0B
SPECIAL_UP1_EFFECT EQU $0D
EVASION_UP1_EFFECT EQU $0F
PAY_DAY_EFFECT EQU $10
SWIFT_EFFECT EQU $11
ATTACK_DOWN1_EFFECT EQU $12
DEFENSE_DOWN1_EFFECT EQU $13
SPEED_DOWN1_EFFECT EQU $14
ACCURACY_DOWN1_EFFECT EQU $16
CONVERSION_EFFECT EQU $18
HAZE_EFFECT EQU $19
BIDE_EFFECT EQU $1A
THRASH_PETAL_DANCE_EFFECT EQU $1B
SWITCH_AND_TELEPORT_EFFECT EQU $1C
TWO_TO_FIVE_ATTACKS_EFFECT EQU $1D
FLINCH_SIDE_EFFECT1 EQU $1F
SLEEP_EFFECT EQU $20
POISON_SIDE_EFFECT2 EQU $21
BURN_SIDE_EFFECT2 EQU $22
PARALYZE_SIDE_EFFECT2 EQU $24
FLINCH_SIDE_EFFECT2 EQU $25
OHKO_EFFECT EQU $26 ; moves like Horn Drill
CHARGE_EFFECT EQU $27 ; moves like Solar Beam
SUPER_FANG_EFFECT EQU $28
SPECIAL_DAMAGE_EFFECT EQU $29 ; Seismic Toss, Night Shade, Sonic Boom, Dragon Rage, Psywave
TRAPPING_EFFECT EQU $2A ; moves like Wrap
FLY_EFFECT EQU $2B
ATTACK_TWICE_EFFECT EQU $2C
JUMP_KICK_EFFECT EQU $2D ; Jump Kick and Hi Jump Kick effect
MIST_EFFECT EQU $2E
FOCUS_ENERGY_EFFECT EQU $2F
RECOIL_EFFECT EQU $30 ; moves like Double Edge
CONFUSION_EFFECT EQU $31 ; Confuse Ray, Supersonic (not the move Confusion)
ATTACK_UP2_EFFECT EQU $32
DEFENSE_UP2_EFFECT EQU $33
SPEED_UP2_EFFECT EQU $34
SPECIAL_UP2_EFFECT EQU $35
HEAL_EFFECT EQU $38 ; Recover, Softboiled, Rest
TRANSFORM_EFFECT EQU $39
DEFENSE_DOWN2_EFFECT EQU $3B
LIGHT_SCREEN_EFFECT EQU $40
REFLECT_EFFECT EQU $41
POISON_EFFECT EQU $42
PARALYZE_EFFECT EQU $43
ATTACK_DOWN_SIDE_EFFECT EQU $44
DEFENSE_DOWN_SIDE_EFFECT EQU $45
SPEED_DOWN_SIDE_EFFECT EQU $46
SPECIAL_DOWN_SIDE_EFFECT EQU $47
CONFUSION_SIDE_EFFECT EQU $4C
TWINEEDLE_EFFECT EQU $4D
SUBSTITUTE_EFFECT EQU $4F
HYPER_BEAM_EFFECT EQU $50
RAGE_EFFECT EQU $51
MIMIC_EFFECT EQU $52
METRONOME_EFFECT EQU $53
LEECH_SEED_EFFECT EQU $54
SPLASH_EFFECT EQU $55
DISABLE_EFFECT EQU $56
; fixed damage constants
SONICBOOM_DAMAGE EQU 20
DRAGON_RAGE_DAMAGE EQU 40

9
constants/oam_constants.asm Executable file
View file

@ -0,0 +1,9 @@
; 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
OAMFLAG_VFLIPPED EQU %00100000 ; OAM flag flips the sprite vertically.
; Used for making left facing sprites face right and to alternate between left and right foot animation when walking up or down
; OAM attribute flags
OAM_HFLIP EQU %00100000 ; horizontal flip
OAM_VFLIP EQU %01000000 ; vertical flip

View file

@ -0,0 +1,38 @@
; super game boy palettes
PAL_ROUTE EQU $00
PAL_PALLET EQU $01
PAL_VIRIDIAN EQU $02
PAL_PEWTER EQU $03
PAL_CERULEAN EQU $04
PAL_LAVENDER EQU $05
PAL_VERMILION EQU $06
PAL_CELADON EQU $07
PAL_FUCHSIA EQU $08
PAL_CINNABAR EQU $09
PAL_INDIGO EQU $0A
PAL_SAFFRON EQU $0B
PAL_TOWNMAP EQU $0C
PAL_LOGO1 EQU $0D
; XXX
PAL_LOGO2 EQU $0F
PAL_MEWMON EQU $10
PAL_BLUEMON EQU $11
PAL_REDMON EQU $12
PAL_CYANMON EQU $13
PAL_PURPLEMON EQU $14
PAL_BROWNMON EQU $15
PAL_GREENMON EQU $16
PAL_PINKMON EQU $17
PAL_YELLOWMON EQU $18
PAL_GREYMON EQU $19
PAL_SLOTS1 EQU $1A
PAL_SLOTS2 EQU $1B
PAL_SLOTS3 EQU $1C
PAL_SLOTS4 EQU $1D
PAL_BLACK EQU $1E
PAL_GREENBAR EQU $1F
PAL_YELLOWBAR EQU $20
PAL_REDBAR EQU $21
PAL_BADGE EQU $22
PAL_CAVE EQU $23
; XXX

View file

@ -0,0 +1,151 @@
DEX_BULBASAUR EQU 1
DEX_IVYSAUR EQU 2
DEX_VENUSAUR EQU 3
DEX_CHARMANDER EQU 4
DEX_CHARMELEON EQU 5
DEX_CHARIZARD EQU 6
DEX_SQUIRTLE EQU 7
DEX_WARTORTLE EQU 8
DEX_BLASTOISE EQU 9
DEX_CATERPIE EQU 10
DEX_METAPOD EQU 11
DEX_BUTTERFREE EQU 12
DEX_WEEDLE EQU 13
DEX_KAKUNA EQU 14
DEX_BEEDRILL EQU 15
DEX_PIDGEY EQU 16
DEX_PIDGEOTTO EQU 17
DEX_PIDGEOT EQU 18
DEX_RATTATA EQU 19
DEX_RATICATE EQU 20
DEX_SPEAROW EQU 21
DEX_FEAROW EQU 22
DEX_EKANS EQU 23
DEX_ARBOK EQU 24
DEX_PIKACHU EQU 25
DEX_RAICHU EQU 26
DEX_SANDSHREW EQU 27
DEX_SANDSLASH EQU 28
DEX_NIDORAN_F EQU 29
DEX_NIDORINA EQU 30
DEX_NIDOQUEEN EQU 31
DEX_NIDORAN_M EQU 32
DEX_NIDORINO EQU 33
DEX_NIDOKING EQU 34
DEX_CLEFAIRY EQU 35
DEX_CLEFABLE EQU 36
DEX_VULPIX EQU 37
DEX_NINETALES EQU 38
DEX_JIGGLYPUFF EQU 39
DEX_WIGGLYTUFF EQU 40
DEX_ZUBAT EQU 41
DEX_GOLBAT EQU 42
DEX_ODDISH EQU 43
DEX_GLOOM EQU 44
DEX_VILEPLUME EQU 45
DEX_PARAS EQU 46
DEX_PARASECT EQU 47
DEX_VENONAT EQU 48
DEX_VENOMOTH EQU 49
DEX_DIGLETT EQU 50
DEX_DUGTRIO EQU 51
DEX_MEOWTH EQU 52
DEX_PERSIAN EQU 53
DEX_PSYDUCK EQU 54
DEX_GOLDUCK EQU 55
DEX_MANKEY EQU 56
DEX_PRIMEAPE EQU 57
DEX_GROWLITHE EQU 58
DEX_ARCANINE EQU 59
DEX_POLIWAG EQU 60
DEX_POLIWHIRL EQU 61
DEX_POLIWRATH EQU 62
DEX_ABRA EQU 63
DEX_KADABRA EQU 64
DEX_ALAKAZAM EQU 65
DEX_MACHOP EQU 66
DEX_MACHOKE EQU 67
DEX_MACHAMP EQU 68
DEX_BELLSPROUT EQU 69
DEX_WEEPINBELL EQU 70
DEX_VICTREEBEL EQU 71
DEX_TENTACOOL EQU 72
DEX_TENTACRUEL EQU 73
DEX_GEODUDE EQU 74
DEX_GRAVELER EQU 75
DEX_GOLEM EQU 76
DEX_PONYTA EQU 77
DEX_RAPIDASH EQU 78
DEX_SLOWPOKE EQU 79
DEX_SLOWBRO EQU 80
DEX_MAGNEMITE EQU 81
DEX_MAGNETON EQU 82
DEX_FARFETCH_D EQU 83
DEX_DODUO EQU 84
DEX_DODRIO EQU 85
DEX_SEEL EQU 86
DEX_DEWGONG EQU 87
DEX_GRIMER EQU 88
DEX_MUK EQU 89
DEX_SHELLDER EQU 90
DEX_CLOYSTER EQU 91
DEX_GASTLY EQU 92
DEX_HAUNTER EQU 93
DEX_GENGAR EQU 94
DEX_ONIX EQU 95
DEX_DROWZEE EQU 96
DEX_HYPNO EQU 97
DEX_KRABBY EQU 98
DEX_KINGLER EQU 99
DEX_VOLTORB EQU 100
DEX_ELECTRODE EQU 101
DEX_EXEGGCUTE EQU 102
DEX_EXEGGUTOR EQU 103
DEX_CUBONE EQU 104
DEX_MAROWAK EQU 105
DEX_HITMONLEE EQU 106
DEX_HITMONCHAN EQU 107
DEX_LICKITUNG EQU 108
DEX_KOFFING EQU 109
DEX_WEEZING EQU 110
DEX_RHYHORN EQU 111
DEX_RHYDON EQU 112
DEX_CHANSEY EQU 113
DEX_TANGELA EQU 114
DEX_KANGASKHAN EQU 115
DEX_HORSEA EQU 116
DEX_SEADRA EQU 117
DEX_GOLDEEN EQU 118
DEX_SEAKING EQU 119
DEX_STARYU EQU 120
DEX_STARMIE EQU 121
DEX_MR_MIME EQU 122
DEX_SCYTHER EQU 123
DEX_JYNX EQU 124
DEX_ELECTABUZZ EQU 125
DEX_MAGMAR EQU 126
DEX_PINSIR EQU 127
DEX_TAUROS EQU 128
DEX_MAGIKARP EQU 129
DEX_GYARADOS EQU 130
DEX_LAPRAS EQU 131
DEX_DITTO EQU 132
DEX_EEVEE EQU 133
DEX_VAPOREON EQU 134
DEX_JOLTEON EQU 135
DEX_FLAREON EQU 136
DEX_PORYGON EQU 137
DEX_OMANYTE EQU 138
DEX_OMASTAR EQU 139
DEX_KABUTO EQU 140
DEX_KABUTOPS EQU 141
DEX_AERODACTYL EQU 142
DEX_SNORLAX EQU 143
DEX_ARTICUNO EQU 144
DEX_ZAPDOS EQU 145
DEX_MOLTRES EQU 146
DEX_DRATINI EQU 147
DEX_DRAGONAIR EQU 148
DEX_DRAGONITE EQU 149
DEX_MEWTWO EQU 150
DEX_MEW EQU 151

View file

@ -0,0 +1,154 @@
RHYDON EQU $01
KANGASKHAN EQU $02
NIDORAN_M EQU $03
CLEFAIRY EQU $04
SPEAROW EQU $05
VOLTORB EQU $06
NIDOKING EQU $07
SLOWBRO EQU $08
IVYSAUR EQU $09
EXEGGUTOR EQU $0A
LICKITUNG EQU $0B
EXEGGCUTE EQU $0C
GRIMER EQU $0D
GENGAR EQU $0E
NIDORAN_F EQU $0F
NIDOQUEEN EQU $10
CUBONE EQU $11
RHYHORN EQU $12
LAPRAS EQU $13
ARCANINE EQU $14
MEW EQU $15
GYARADOS EQU $16
SHELLDER EQU $17
TENTACOOL EQU $18
GASTLY EQU $19
SCYTHER EQU $1A
STARYU EQU $1B
BLASTOISE EQU $1C
PINSIR EQU $1D
TANGELA EQU $1E
GROWLITHE EQU $21
ONIX EQU $22
FEAROW EQU $23
PIDGEY EQU $24
SLOWPOKE EQU $25
KADABRA EQU $26
GRAVELER EQU $27
CHANSEY EQU $28
MACHOKE EQU $29
MR_MIME EQU $2A
HITMONLEE EQU $2B
HITMONCHAN EQU $2C
ARBOK EQU $2D
PARASECT EQU $2E
PSYDUCK EQU $2F
DROWZEE EQU $30
GOLEM EQU $31
MAGMAR EQU $33
ELECTABUZZ EQU $35
MAGNETON EQU $36
KOFFING EQU $37
MANKEY EQU $39
SEEL EQU $3A
DIGLETT EQU $3B
TAUROS EQU $3C
FARFETCH_D EQU $40
VENONAT EQU $41
DRAGONITE EQU $42
DODUO EQU $46
POLIWAG EQU $47
JYNX EQU $48
MOLTRES EQU $49
ARTICUNO EQU $4A
ZAPDOS EQU $4B
DITTO EQU $4C
MEOWTH EQU $4D
KRABBY EQU $4E
VULPIX EQU $52
NINETALES EQU $53
PIKACHU EQU $54
RAICHU EQU $55
DRATINI EQU $58
DRAGONAIR EQU $59
KABUTO EQU $5A
KABUTOPS EQU $5B
HORSEA EQU $5C
SEADRA EQU $5D
SANDSHREW EQU $60
SANDSLASH EQU $61
OMANYTE EQU $62
OMASTAR EQU $63
JIGGLYPUFF EQU $64
WIGGLYTUFF EQU $65
EEVEE EQU $66
FLAREON EQU $67
JOLTEON EQU $68
VAPOREON EQU $69
MACHOP EQU $6A
ZUBAT EQU $6B
EKANS EQU $6C
PARAS EQU $6D
POLIWHIRL EQU $6E
POLIWRATH EQU $6F
WEEDLE EQU $70
KAKUNA EQU $71
BEEDRILL EQU $72
DODRIO EQU $74
PRIMEAPE EQU $75
DUGTRIO EQU $76
VENOMOTH EQU $77
DEWGONG EQU $78
CATERPIE EQU $7B
METAPOD EQU $7C
BUTTERFREE EQU $7D
MACHAMP EQU $7E
GOLDUCK EQU $80
HYPNO EQU $81
GOLBAT EQU $82
MEWTWO EQU $83
SNORLAX EQU $84
MAGIKARP EQU $85
MUK EQU $88
KINGLER EQU $8A
CLOYSTER EQU $8B
ELECTRODE EQU $8D
CLEFABLE EQU $8E
WEEZING EQU $8F
PERSIAN EQU $90
MAROWAK EQU $91
HAUNTER EQU $93
ABRA EQU $94
ALAKAZAM EQU $95
PIDGEOTTO EQU $96
PIDGEOT EQU $97
STARMIE EQU $98
BULBASAUR EQU $99
VENUSAUR EQU $9A
TENTACRUEL EQU $9B
GOLDEEN EQU $9D
SEAKING EQU $9E
PONYTA EQU $A3
RAPIDASH EQU $A4
RATTATA EQU $A5
RATICATE EQU $A6
NIDORINO EQU $A7
NIDORINA EQU $A8
GEODUDE EQU $A9
PORYGON EQU $AA
AERODACTYL EQU $AB
MAGNEMITE EQU $AD
CHARMANDER EQU $B0
SQUIRTLE EQU $B1
CHARMELEON EQU $B2
WARTORTLE EQU $B3
CHARIZARD EQU $B4
FOSSIL_KABUTOPS EQU $B6
FOSSIL_AERODACTYL EQU $B7
MON_GHOST EQU $B8
ODDISH EQU $B9
GLOOM EQU $BA
VILEPLUME EQU $BB
BELLSPROUT EQU $BC
WEEPINBELL EQU $BD
VICTREEBEL EQU $BE

89
constants/sprite_constants.asm Executable file
View file

@ -0,0 +1,89 @@
; pokemon's overworld sprites
SPRITE_MON EQU $0
SPRITE_BALL_M EQU $1
SPRITE_HELIX EQU $2
SPRITE_FAIRY EQU $3
SPRITE_BIRD_M EQU $4
SPRITE_WATER EQU $5
SPRITE_BUG EQU $6
SPRITE_GRASS EQU $7
SPRITE_SNAKE EQU $8
SPRITE_QUADRUPED EQU $9
; overworld sprites
SPRITE_RED EQU $01
SPRITE_BLUE EQU $02
SPRITE_OAK EQU $03
SPRITE_BUG_CATCHER EQU $04
SPRITE_SLOWBRO EQU $05
SPRITE_LASS EQU $06
SPRITE_BLACK_HAIR_BOY_1 EQU $07
SPRITE_LITTLE_GIRL EQU $08
SPRITE_BIRD EQU $09
SPRITE_FAT_BALD_GUY EQU $0a
SPRITE_GAMBLER EQU $0b
SPRITE_BLACK_HAIR_BOY_2 EQU $0c
SPRITE_GIRL EQU $0d
SPRITE_HIKER EQU $0e
SPRITE_FOULARD_WOMAN EQU $0f
SPRITE_GENTLEMAN EQU $10
SPRITE_DAISY EQU $11
SPRITE_BIKER EQU $12
SPRITE_SAILOR EQU $13
SPRITE_COOK EQU $14
SPRITE_BIKE_SHOP_GUY EQU $15
SPRITE_MR_FUJI EQU $16
SPRITE_GIOVANNI EQU $17
SPRITE_ROCKET EQU $18
SPRITE_MEDIUM EQU $19
SPRITE_WAITER EQU $1a
SPRITE_ERIKA EQU $1b
SPRITE_MOM_GEISHA EQU $1c
SPRITE_BRUNETTE_GIRL EQU $1d
SPRITE_LANCE EQU $1e
SPRITE_OAK_SCIENTIST_AIDE EQU $1f
SPRITE_OAK_AIDE EQU $20
SPRITE_ROCKER EQU $21
SPRITE_SWIMMER EQU $22
SPRITE_WHITE_PLAYER EQU $23
SPRITE_GYM_HELPER EQU $24
SPRITE_OLD_PERSON EQU $25
SPRITE_MART_GUY EQU $26
SPRITE_FISHER EQU $27
SPRITE_OLD_MEDIUM_WOMAN EQU $28
SPRITE_NURSE EQU $29
SPRITE_CABLE_CLUB_WOMAN EQU $2a
SPRITE_MR_MASTERBALL EQU $2b
SPRITE_LAPRAS_GIVER EQU $2c
SPRITE_WARDEN EQU $2d
SPRITE_SS_CAPTAIN EQU $2e
SPRITE_FISHER2 EQU $2f
SPRITE_BLACKBELT EQU $30
SPRITE_GUARD EQU $31
;SPRITE_COP_GUARD EQU $32
SPRITE_MOM EQU $33
SPRITE_BALDING_GUY EQU $34
SPRITE_YOUNG_BOY EQU $35
SPRITE_GAMEBOY_KID EQU $36
SPRITE_GAMEBOY_KID_COPY EQU $37
SPRITE_CLEFAIRY EQU $38
SPRITE_AGATHA EQU $39
SPRITE_BRUNO EQU $3a
SPRITE_LORELEI EQU $3b
SPRITE_SEEL EQU $3c
SPRITE_BALL EQU $3d
SPRITE_OMANYTE EQU $3e
SPRITE_BOULDER EQU $3f
SPRITE_PAPER_SHEET EQU $40
SPRITE_BOOK_MAP_DEX EQU $41
SPRITE_CLIPBOARD EQU $42
SPRITE_SNORLAX EQU $43
SPRITE_OLD_AMBER_COPY EQU $44
SPRITE_OLD_AMBER EQU $45
SPRITE_LYING_OLD_MAN_UNUSED_1 EQU $46
SPRITE_LYING_OLD_MAN_UNUSED_2 EQU $47
SPRITE_LYING_OLD_MAN EQU $48
; different kinds of people events
ITEM EQU $80
TRAINER EQU $40

6
constants/status_constants.asm Executable file
View file

@ -0,0 +1,6 @@
; status ailments (masks)
SLP EQU %00000111
PSN EQU %00001000
BRN EQU %00010000
FRZ EQU %00100000
PAR EQU %01000000

View file

@ -0,0 +1,48 @@
; sometimes it's necessary to add $C8 to these values
YOUNGSTER EQU $01
BUG_CATCHER EQU $02
LASS EQU $03
SAILOR EQU $04
JR__TRAINER_M EQU $05
JR__TRAINER_F EQU $06
POKEMANIAC EQU $07
SUPER_NERD EQU $08
HIKER EQU $09
BIKER EQU $0A
BURGLAR EQU $0B
ENGINEER EQU $0C
JUGGLER_X EQU $0D
FISHER EQU $0E
SWIMMER EQU $0F
CUE_BALL EQU $10
GAMBLER EQU $11
BEAUTY EQU $12
PSYCHIC_TR EQU $13
ROCKER EQU $14
JUGGLER EQU $15
TAMER EQU $16
BIRD_KEEPER EQU $17
BLACKBELT EQU $18
SONY1 EQU $19
PROF_OAK EQU $1A
CHIEF EQU $1B
SCIENTIST EQU $1C
GIOVANNI EQU $1D
ROCKET EQU $1E
COOLTRAINER_M EQU $1F
COOLTRAINER_F EQU $20
BRUNO EQU $21
BROCK EQU $22
MISTY EQU $23
LT__SURGE EQU $24
ERIKA EQU $25
KOGA EQU $26
BLAINE EQU $27
SABRINA EQU $28
GENTLEMAN EQU $29
SONY2 EQU $2A
SONY3 EQU $2B
LORELEI EQU $2C
CHANNELER EQU $2D
AGATHA EQU $2E
LANCE EQU $2F

16
constants/type_constants.asm Executable file
View file

@ -0,0 +1,16 @@
; Elemental types
NORMAL EQU $00
FIGHTING EQU $01
FLYING EQU $02
POISON EQU $03
GROUND EQU $04
ROCK EQU $05
BUG EQU $07
GHOST EQU $08
FIRE EQU $14
WATER EQU $15
GRASS EQU $16
ELECTRIC EQU $17
PSYCHIC EQU $18
ICE EQU $19
DRAGON EQU $1A

2
extras

@ -1 +1 @@
Subproject commit c57e0f0706608a4acba89182945bec975a43acfd
Subproject commit d8f4e687ebc49d4b135f0d8b7f10a643114a0d8a

BIN
gfx/ED_tile.1bpp Executable file

Binary file not shown.

BIN
gfx/blue/slotmachine1.2bpp Normal file → Executable file

Binary file not shown.

Binary file not shown.

BIN
gfx/red/slotmachine1.2bpp Normal file → Executable file

Binary file not shown.

116
hram.asm Normal file
View file

@ -0,0 +1,116 @@
H_SPRITEWIDTH EQU $FF8B ; in bytes
H_SPRITEINTERLACECOUNTER EQU $FF8B
H_SPRITEHEIGHT EQU $FF8C ; in bytes
H_SPRITEOFFSET EQU $FF8D
H_SOFTRESETCOUNTER EQU $FF8A ; initialized to 16, decremented each input iteration if the user presses the reset sequence (A+B+S+s). Soft reset when 0 is reached.
; counters for blinking down arrow
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
H_MULTIPLICAND EQU $FF96 ; 3 bytes, big endian order
H_MULTIPLIER EQU $FF99 ; 1 byte
H_PRODUCT EQU $FF95 ; 4 bytes, big endian order
H_DIVIDEND EQU $FF95 ; 4 bytes, big endian order
H_DIVISOR EQU $FF99 ; 1 byte
H_QUOTIENT EQU $FF95 ; 4 bytes, big endian order
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)
H_OLDPRESSEDBUTTONS EQU $FFB1
H_NEWLYRELEASEDBUTTONS EQU $FFB2
H_NEWLYPRESSEDBUTTONS EQU $FFB3
H_CURRENTPRESSEDBUTTONS EQU $FFB4
H_LOADEDROMBANK EQU $FFB8
; is automatic background transfer during V-blank enabled?
; if nonzero, yes
; if zero, no
H_AUTOBGTRANSFERENABLED EQU $FFBA
TRANSFERTOP EQU 0
TRANSFERMIDDLE EQU 1
TRANSFERBOTTOM EQU 2
; 00 = top third of background
; 01 = middle third of background
; 02 = bottom third of background
H_AUTOBGTRANSFERPORTION EQU $FFBB
; the destination address of the automatic background transfer
H_AUTOBGTRANSFERDEST EQU $FFBC ; 2 bytes
; temporary storage for stack pointer during memory transfers that use pop
; to increase speed
H_SPTEMP EQU $FFBF ; 2 bytes
; source address for VBlankCopyBgMap function
; the first byte doubles as the byte that enabled the transfer.
; if it is 0, the transfer is disabled
; if it is not 0, the transfer is enabled
; this means that XX00 is not a valid source address
H_VBCOPYBGSRC EQU $FFC1 ; 2 bytes
; destination address for VBlankCopyBgMap function
H_VBCOPYBGDEST EQU $FFC3 ; 2 bytes
; number of rows for VBlankCopyBgMap to copy
H_VBCOPYBGNUMROWS EQU $FFC5
; size of VBlankCopy transfer in 16-byte units
H_VBCOPYSIZE EQU $FFC6
; source address for VBlankCopy function
H_VBCOPYSRC EQU $FFC7
; destination address for VBlankCopy function
H_VBCOPYDEST EQU $FFC9
; size of source data for VBlankCopyDouble in 8-byte units
H_VBCOPYDOUBLESIZE EQU $FFCB
; source address for VBlankCopyDouble function
H_VBCOPYDOUBLESRC EQU $FFCC
; destination address for VBlankCopyDouble function
H_VBCOPYDOUBLEDEST EQU $FFCE
; controls whether a row or column of 2x2 tile blocks is redrawn in V-blank
; 00 = no redraw
; 01 = redraw column
; 02 = redraw row
H_SCREENEDGEREDRAW EQU $FFD0
REDRAWCOL EQU 1
REDRAWROW EQU 2
H_SCREENEDGEREDRAWADDR EQU $FFD1
H_RAND1 EQU $FFD3
H_RAND2 EQU $FFD4
H_FRAMECOUNTER EQU $FFD5 ; decremented every V-blank (used for delays)
; V-blank sets this to 0 each time it runs.
; So, by setting it to a nonzero value and waiting for it to become 0 again,
; you can detect that the V-blank handler has run since then.
H_VBLANKOCCURRED EQU $FFD6
H_CURRENTSPRITEOFFSET EQU $FFDA ; multiple of $10
H_WHOSETURN EQU $FFF3 ; 0 on players turn, 1 on enemys turn
H_JOYPADSTATE EQU $FFF8

17
init.sh Executable file
View file

@ -0,0 +1,17 @@
#!/bin/sh
# install rgbds
git clone git://github.com/bentley/rgbds.git && \
cd rgbds && \
make && \
sudo mkdir -p /usr/local/man/man{1,7} && \
sudo make install && \
cd .. && \
rm -rf rgbds
# set up the submodule (extras/)
git submodule init && \
git submodule update && \
sudo easy_install pip && \
sudo pip install -r extras/requirements.txt

265
macros.asm Normal file
View file

@ -0,0 +1,265 @@
;\1 = X
;\2 = Y
FuncCoord: MACRO
Coord = $C3A0 + 20 * \2 + \1
ENDM
;\1 = Map Width
;\2 = Rows above (Y-blocks)
;\3 = X movement (X-blocks)
EVENT_DISP: MACRO
dw ($C6EF + (\1) + ((\1) + 6) * ((\2) >> 1) + ((\3) >> 1)) ; Ev.Disp
db \2,\3 ;Y,X
ENDM
FLYWARP_DATA: MACRO
EVENT_DISP \1,\2,\3
db ((\2) & $01) ;sub-block Y
db ((\3) & $01) ;sub-block X
ENDM
; external map entry macro
EMAP: MACRO ; emap x-coordinate,y-coordinate,textpointer
; the appearance of towns and routes in the town map, indexed by map id
; nybble: y-coordinate
; nybble: x-coordinate
; word : pointer to map name
db (\1 + (\2 << 4))
dw \3
ENDM
; internal map entry macro
IMAP: MACRO ; imap mapid_less_than,x-coordinate,y-coordinate,textpointer
; the appearance of buildings and dungeons in the town map
; byte : maximum map id subject to this rule
; nybble: y-coordinate
; nybble: x-coordinate
; word : pointer to map name
db \1
db \2 + \3 << 4
dw \4
ENDM
; tilesets' headers macro
TSETHEAD: MACRO
db BANK(\2)
dw \1,\2,\3
db \4,\5,\6,\7,\8
ENDM
; macro for two nibbles
dn: MACRO
db (\1 << 4 | \2)
ENDM
; macro for putting a byte then a word
dbw: MACRO
db \1
dw \2
ENDM
; data format macros
RGB: MACRO
dw (\3 << 10 | \2 << 5 | \1)
ENDM
; text macros
TX_NUM: MACRO
; print a big-endian decimal number.
; \1: address to read from
; \2: number of bytes to read
; \3: number of digits to display
db $09
dw \1
db \2 << 4 | \3
ENDM
TX_FAR: MACRO
db $17
dw \1
db BANK(\1)
ENDM
; text engine command $1
TX_RAM: MACRO
; prints text to screen
; \1: RAM address to read from
db $1
dw \1
ENDM
; Predef macro.
PREDEF: MACRO
ld a, (\1 - PredefPointers) / 3
call Predef
ENDM
PREDEF_JUMP: MACRO
ld a, (\1 - PredefPointers) / 3
jp Predef
ENDM
;1_channel EQU $00
;2_channels EQU $40
;3_channels EQU $80
;4_channels EQU $C0
CH0 EQU 0
CH1 EQU 1
CH2 EQU 2
CH3 EQU 3
CH4 EQU 4
CH5 EQU 5
CH6 EQU 6
CH7 EQU 7
;Note Pitch
C_ EQU $0
C# EQU $1
D_ EQU $2
D# EQU $3
E_ EQU $4
F_ EQU $5
F# EQU $6
G_ EQU $7
G# EQU $8
A_ EQU $9
A# EQU $A
B_ EQU $B
;drum instruments
snare1 EQU $01
snare2 EQU $02
snare3 EQU $03
snare4 EQU $04
snare5 EQU $05
triangle1 EQU $06
triangle2 EQU $07
snare6 EQU $08
snare7 EQU $09
snare8 EQU $0a
snare9 EQU $0b
cymbal1 EQU $0c
cymbal2 EQU $0d
cymbal3 EQU $0e
mutedsnare1 EQU $0f
triangle3 EQU $10
mutedsnare2 EQU $11
mutedsnare3 EQU $12
mutedsnare4 EQU $13
unknownsfx0x10: MACRO
db $10
db \1
ENDM
unknownsfx0x20: MACRO
db $20 | \1
db \2
db \3
db \4
ENDM
unknownnoise0x20: MACRO
db $20 | \1
db \2
db \3
ENDM
;format: note pitch, length (in 16ths)
note: MACRO
db (\1 << 4) | (\2 - 1)
ENDM
;format: dnote length (in 16ths), instrument
dnote: MACRO
db $B0 | (\1 - 1)
db \2
ENDM
;format: rest length (in 16ths)
rest: MACRO
db $C0 | (\1 - 1)
ENDM
; format: notetype speed, volume, fade
notetype: MACRO
db $D0 | \1
db (\2 << 4) | \3
ENDM
dspeed: MACRO
db $D0 | \1
ENDM
octave: MACRO
db $E8 - \1
ENDM
togglecall: MACRO
db $E8
ENDM
;format: vibrato delay, rate, depth
vibrato: MACRO
db $EA
db \1
db (\2 << 4) | \3
ENDM
pitchbend: MACRO
db $EB
db \1
db \2
ENDM
duty: MACRO
db $EC
db \1
ENDM
tempo: MACRO
db $ED
db \1
db \2
ENDM
unknownmusic0xee: MACRO
db $EE
db \1
ENDM
stereopanning: MACRO
db $F0
db \1
ENDM
executemusic: MACRO
db $F8
ENDM
dutycycle: MACRO
db $FC
db \1
ENDM
;format: callchannel address
;callchannel: MACRO
; db $FD
; dw \1
;ENDM
;format: loopchannel count, address
;loopchannel: MACRO
; db $FE
; db \1
; dw \2
;ENDM
endchannel: MACRO
db $FF
ENDM

15095
main.asm

File diff suppressed because it is too large Load diff

BIN
maps/unusedblocks58d7d.blk Executable file

Binary file not shown.

BIN
maps/unusedblocks601f8.blk Executable file

Binary file not shown.

BIN
maps/unusedblocks60cef.blk Executable file

Binary file not shown.

View file

@ -1,4 +1,5 @@
_RED EQU 0
_BLUE EQU 1
INCLUDE "globals.asm"
INCLUDE "wram.asm"
INCLUDE "main.asm"

View file

@ -1,4 +1,5 @@
_RED EQU 1
_BLUE EQU 0
INCLUDE "globals.asm"
INCLUDE "wram.asm"
INCLUDE "main.asm"

View file

@ -1,10 +1,17 @@
# -*- coding: utf-8 -*-
import extras.pokemontools.preprocessor as preprocessor
import extras.pokemontools.configuration as configuration
config = configuration.Config()
import sys
from extras.pokemontools.crystal import (
callchannel,
loopchannel,
)
chars = {
"": 0x05,
"": 0x06,
@ -260,14 +267,21 @@ chars = {
"9": 0xFF,
}
preprocessor.chars = chars
def load_pokered_macros():
macros = [callchannel, loopchannel]
return macros
from extras.pokemontools.crystal import (
callchannel,
loopchannel,
)
def setup_processor():
preprocessor.chars = chars
macros = load_pokered_macros()
processor = preprocessor.Preprocessor(config, macros)
return processor
config = configuration.Config()
macros = [callchannel, loopchannel]
processor = preprocessor.Preprocessor(config, macros)
processor.preprocess()
def main():
processor = setup_processor()
output = processor.preprocess()
processor.update_globals()
return output
if __name__ == '__main__':
main()

40
prequeue.py Normal file
View file

@ -0,0 +1,40 @@
# coding: utf-8
"""
Starting a new python process to preprocess each source file creates too much
overhead. Instead, a list of files to preprocess is fed into a script run from
a single process.
"""
import os
import sys
import preprocessor
def preprocess_queue(filenames=sys.argv[1:]):
stdin = sys.stdin
stdout = sys.stdout
processor = preprocessor.setup_processor()
for source in filenames:
dest = os.path.splitext(source)[0] + '.tx'
sys.stdin = open(source, 'r')
sys.stdout = open(dest, 'w')
processor.preprocess()
processor.update_globals()
sys.stdin = stdin
sys.stdout = stdout
def main():
filenames = list(set(sys.argv[1:]))
if filenames:
num_files = len(filenames)
s = '' if num_files == 1 else 's'
sys.stdout.write('Preprocessing {0} file{1}...\n'.format(num_files, s))
preprocess_queue(filenames)
if __name__ == '__main__':
main()

1432
wram.asm

File diff suppressed because it is too large Load diff