summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluckytyphlosion <alan.rj.huang@gmail.com>2015-08-01 12:30:16 -0400
committerluckytyphlosion <alan.rj.huang@gmail.com>2015-08-01 12:30:16 -0400
commitad3fca33d3532f5dcffd22e5b88d3169675f43d0 (patch)
treedb2e88ba1efa00c9957c688109a589294ba280b3
parent888860a5eeec547348c6a049fdf2595c0aa1c522 (diff)
Attempt to make yellow buildable.
Building Errors: Segmentation Error.
-rw-r--r--Makefile19
-rw-r--r--constants/event_macros.asm443
-rwxr-xr-xconstants/type_constants.asm6
-rwxr-xr-xdata/town_map_entries.asm4
-rwxr-xr-xdata/town_map_order.asm2
-rw-r--r--engine/bank3c/main.asm5
-rw-r--r--engine/bank3d/link_menu.asm4
-rw-r--r--engine/bank3d/main.asm8
-rw-r--r--engine/bank3f/main.asm16
-rw-r--r--engine/battle/link_battle_versus_text.asm2
-rwxr-xr-xengine/hall_of_fame.asm6
-rwxr-xr-xengine/multiply_divide.asm4
-rwxr-xr-xengine/palettes.asm11
-rwxr-xr-xengine/town_map.asm255
-rw-r--r--home.asm46
-rw-r--r--home/overworld.asm2
-rw-r--r--macros.asm46
-rwxr-xr-xyellow/audio.asm4
-rwxr-xr-xyellow/main.asm802
19 files changed, 1494 insertions, 191 deletions
diff --git a/Makefile b/Makefile
index 5cc485c1..ecbeb32a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,23 +1,18 @@
-# Build Red/Blue. Yellow is WIP.
-roms := pokered.gbc pokeblue.gbc
+# Build Yellow.
+roms := pokeyellow.gbc
-.PHONY: all clean red blue yellow compare
+.PHONY: all clean yellow compare
all: $(roms)
-red: pokered.gbc
-blue: pokeblue.gbc
yellow: pokeyellow.gbc
-versions := red blue yellow
+versions := 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"
@@ -32,7 +27,7 @@ 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: red blue
+compare: yellow
@$(MD5) roms.md5
@@ -54,7 +49,7 @@ includes := $(PYTHON) $(poketools)/scan_includes.py
-# Collect file dependencies for objects in red/, blue/ and yellow/.
+# Collect file dependencies for objects in 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')) \
@@ -94,4 +89,4 @@ poke%.gbc: $$(%_obj)
clean:
rm -f $(roms) $(all_obj) poke*.sym
- find . \( -iname '*.1bpp' -o -iname '*.2bpp' -o -iname '*.pic' \) -exec rm {} +
+ find . \( -iname '*.1bpp' -o -iname '*.2bpp' -o -iname '*.pic' \) -exec rm {} + \ No newline at end of file
diff --git a/constants/event_macros.asm b/constants/event_macros.asm
new file mode 100644
index 00000000..0f4f57b5
--- /dev/null
+++ b/constants/event_macros.asm
@@ -0,0 +1,443 @@
+;\1 = event index
+;\2 = return result in carry instead of zero flag
+CheckEvent: MACRO
+event_byte = ((\1) / 8)
+ ld a, [wEventFlags + event_byte]
+
+ IF _NARG > 1
+ IF ((\1) % 8) == 7
+ add a
+ ELSE
+ REPT ((\1) % 8) + 1
+ rrca
+ ENDR
+ ENDC
+ ELSE
+ bit (\1) % 8, a
+ ENDC
+ ENDM
+
+;\1 = event index
+CheckEventReuseA: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld a, [wEventFlags + event_byte]
+ ENDC
+
+ bit (\1) % 8, a
+ ENDM
+
+;\1 = event index
+;\2 = event index of the last event used before the branch
+CheckEventAfterBranchReuseA: MACRO
+event_byte = ((\2) / 8)
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld a, [wEventFlags + event_byte]
+ ENDC
+
+ bit (\1) % 8, a
+ ENDM
+
+;\1 = reg
+;\2 = event index
+;\3 = event index this event is relative to (optional, this is needed when there is a fixed flag address)
+EventFlagBit: MACRO
+ IF _NARG > 2
+ ld \1, ((\3) % 8) + ((\2) - (\3))
+ ELSE
+ ld \1, (\2) % 8
+ ENDC
+ ENDM
+
+;\1 = reg
+;\2 = event index
+EventFlagAddress: MACRO
+event_byte = ((\2) / 8)
+ ld \1, wEventFlags + event_byte
+ ENDM
+
+;\1 = event index
+CheckEventHL: MACRO
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ bit (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+CheckEventReuseHL: MACRO
+IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ bit (\1) % 8, [hl]
+ ENDM
+
+; dangerous, only use when HL is guaranteed to be the desired value
+;\1 = event index
+CheckEventForceReuseHL: MACRO
+event_byte = ((\1) / 8)
+ bit (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+;\2 = event index of the last event used before the branch
+CheckEventAfterBranchReuseHL: MACRO
+event_byte = ((\2) / 8)
+IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ bit (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+CheckAndSetEvent: MACRO
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ bit (\1) % 8, [hl]
+ set (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+CheckAndResetEvent: MACRO
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ bit (\1) % 8, [hl]
+ res (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+CheckAndSetEventA: MACRO
+ ld a, [wEventFlags + ((\1) / 8)]
+ bit (\1) % 8, a
+ set (\1) % 8, a
+ ld [wEventFlags + ((\1) / 8)], a
+ ENDM
+
+;\1 = event index
+CheckAndResetEventA: MACRO
+ ld a, [wEventFlags + ((\1) / 8)]
+ bit (\1) % 8, a
+ res (\1) % 8, a
+ ld [wEventFlags + ((\1) / 8)], a
+ ENDM
+
+;\1 = event index
+SetEvent: MACRO
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ set (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+SetEventReuseHL: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ set (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+;\2 = event index of the last event used before the branch
+SetEventAfterBranchReuseHL: MACRO
+event_byte = ((\2) / 8)
+IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ set (\1) % 8, [hl]
+ ENDM
+
+; dangerous, only use when HL is guaranteed to be the desired value
+;\1 = event index
+SetEventForceReuseHL: MACRO
+event_byte = ((\1) / 8)
+ set (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+;\2 = event index
+;\3 = event index (optional)
+SetEvents: MACRO
+ SetEvent \1
+ SetEventReuseHL \2
+
+ IF _NARG > 2
+ SetEventReuseHL \3
+ ENDC
+ ENDM
+
+;\1 = event index
+ResetEvent: MACRO
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ res (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+ResetEventReuseHL: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ res (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+;\2 = event index of the last event used before the branch
+ResetEventAfterBranchReuseHL: MACRO
+event_byte = ((\2) / 8)
+IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ res (\1) % 8, [hl]
+ ENDM
+
+; dangerous, only use when HL is guaranteed to be the desired value
+;\1 = event index
+ResetEventForceReuseHL: MACRO
+event_byte = ((\1) / 8)
+ res (\1) % 8, [hl]
+ ENDM
+
+;\1 = event index
+;\2 = event index
+;\3 = event index (optional)
+ResetEvents: MACRO
+ ResetEvent \1
+ ResetEventReuseHL \2
+
+ IF _NARG > 2
+ ResetEventReuseHL \3
+ ENDC
+ ENDM
+
+;\1 = event index
+;\2 = number of bytes away from the base address (optional, for matching the ROM)
+dbEventFlagBit: MACRO
+ IF _NARG > 1
+ db ((\1) % 8) + ((\2) * 8)
+ ELSE
+ db ((\1) % 8)
+ ENDC
+ ENDM
+
+;\1 = event index
+;\2 = number of bytes away from the base address (optional, for matching the ROM)
+dwEventFlagAddress: MACRO
+ IF _NARG > 1
+ dw wEventFlags + ((\1) / 8) - (\2)
+ ELSE
+ dw wEventFlags + ((\1) / 8)
+ ENDC
+ ENDM
+
+;\1 = start
+;\2 = end
+SetEventRange: MACRO
+event_start_byte = ((\1) / 8)
+event_end_byte = ((\2) / 8)
+
+ IF event_end_byte < event_start_byte
+ FAIL "Incorrect argument order in SetEventRange."
+ ENDC
+
+ IF event_start_byte == event_end_byte
+ ld a, [wEventFlags + event_start_byte]
+ or (1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))
+ ld [wEventFlags + event_start_byte], a
+ ELSE
+event_fill_start = event_start_byte + 1
+event_fill_count = event_end_byte - event_start_byte - 1
+
+ IF ((\1) % 8) == 0
+event_fill_start = event_fill_start + -1
+event_fill_count = event_fill_count + 1
+ ELSE
+ ld a, [wEventFlags + event_start_byte]
+ or $ff - ((1 << ((\1) % 8)) - 1)
+ ld [wEventFlags + event_start_byte], a
+ ENDC
+
+ IF ((\2) % 8) == 7
+event_fill_count = event_fill_count + 1
+ ENDC
+
+ IF event_fill_count == 1
+ ld hl, wEventFlags + event_fill_start
+ ld [hl], $ff
+ ENDC
+
+ IF event_fill_count > 1
+ ld a, $ff
+ ld hl, wEventFlags + event_fill_start
+
+ REPT event_fill_count + -1
+ ld [hli], a
+ ENDR
+
+ ld [hl], a
+ ENDC
+
+ IF ((\2) % 8) == 0
+ ld hl, wEventFlags + event_end_byte
+ set 0, [hl]
+ ELSE
+ IF ((\2) % 8) != 7
+ ld a, [wEventFlags + event_end_byte]
+ or (1 << (((\2) % 8) + 1)) - 1
+ ld [wEventFlags + event_end_byte], a
+ ENDC
+ ENDC
+ ENDC
+ ENDM
+
+;\1 = start
+;\2 = end
+;\3 = assume a is 0 if present
+ResetEventRange: MACRO
+event_start_byte = ((\1) / 8)
+event_end_byte = ((\2) / 8)
+
+ IF event_end_byte < event_start_byte
+ FAIL "Incorrect argument order in ResetEventRange."
+ ENDC
+
+ IF event_start_byte == event_end_byte
+ ld a, [wEventFlags + event_start_byte]
+ and ~((1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))) & $ff
+ ld [wEventFlags + event_start_byte], a
+ ELSE
+event_fill_start = event_start_byte + 1
+event_fill_count = event_end_byte - event_start_byte - 1
+
+ IF ((\1) % 8) == 0
+event_fill_start = event_fill_start + -1
+event_fill_count = event_fill_count + 1
+ ELSE
+ ld a, [wEventFlags + event_start_byte]
+ and ~($ff - ((1 << ((\1) % 8)) - 1)) & $ff
+ ld [wEventFlags + event_start_byte], a
+ ENDC
+
+ IF ((\2) % 8) == 7
+event_fill_count = event_fill_count + 1
+ ENDC
+
+ IF event_fill_count == 1
+ ld hl, wEventFlags + event_fill_start
+ ld [hl], 0
+ ENDC
+
+ IF event_fill_count > 1
+ ld hl, wEventFlags + event_fill_start
+
+ ; force xor a if we just to wrote to it above
+ IF (_NARG < 3) || (((\1) % 8) != 0)
+ xor a
+ ENDC
+
+ REPT event_fill_count + -1
+ ld [hli], a
+ ENDR
+
+ ld [hl], a
+ ENDC
+
+ IF ((\2) % 8) == 0
+ ld hl, wEventFlags + event_end_byte
+ res 0, [hl]
+ ELSE
+ IF ((\2) % 8) != 7
+ ld a, [wEventFlags + event_end_byte]
+ and ~((1 << (((\2) % 8) + 1)) - 1) & $ff
+ ld [wEventFlags + event_end_byte], a
+ ENDC
+ ENDC
+ ENDC
+ ENDM
+
+; returns whether both events are set in Z flag
+; This is counter-intuitive because the other event checks set the Z flag when
+; the event is not set, but this sets the Z flag when the event is set.
+;\1 = event index 1
+;\2 = event index 2
+;\3 = try to reuse a (optional)
+CheckBothEventsSet: MACRO
+ IF ((\1) / 8) == ((\2) / 8)
+ IF (_NARG < 3) || (((\1) / 8) != event_byte)
+event_byte = ((\1) / 8)
+ ld a, [wEventFlags + ((\1) / 8)]
+ ENDC
+ and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+ cp (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+ ELSE
+ ; This case doesn't happen in the original ROM.
+ IF ((\1) % 8) == ((\2) % 8)
+ push hl
+ ld a, [wEventFlags + ((\1) / 8)]
+ ld hl, wEventFlags + ((\2) / 8)
+ and [hl]
+ cpl
+ bit ((\1) % 8), a
+ pop hl
+ ELSE
+ push bc
+ ld a, [wEventFlags + ((\1) / 8)]
+ and (1 << ((\1) % 8))
+ ld b, a
+ ld a, [wEventFlags + ((\2) / 8)]
+ and (1 << ((\2) % 8))
+ or b
+ cp (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+ pop bc
+ ENDC
+ ENDC
+ ENDM
+
+; returns the complement of whether either event is set in Z flag
+;\1 = event index 1
+;\2 = event index 2
+CheckEitherEventSet: MACRO
+ IF ((\1) / 8) == ((\2) / 8)
+ ld a, [wEventFlags + ((\1) / 8)]
+ and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+ ELSE
+ ; This case doesn't happen in the original ROM.
+ IF ((\1) % 8) == ((\2) % 8)
+ push hl
+ ld a, [wEventFlags + ((\1) / 8)]
+ ld hl, wEventFlags + ((\2) / 8)
+ or [hl]
+ bit ((\1) % 8), a
+ pop hl
+ ELSE
+ push bc
+ ld a, [wEventFlags + ((\1) / 8)]
+ and (1 << ((\1) % 8))
+ ld b, a
+ ld a, [wEventFlags + ((\2) / 8)]
+ and (1 << ((\2) % 8))
+ or b
+ pop bc
+ ENDC
+ ENDC
+ ENDM
+
+; for handling fixed event bits when events are inserted/removed
+;\1 = event index
+;\2 = fixed flag bit
+AdjustEventBit: MACRO
+ IF ((\1) % 8) != (\2)
+ add ((\1) % 8) - (\2)
+ ENDC
+ ENDM
diff --git a/constants/type_constants.asm b/constants/type_constants.asm
index 095a3d28..66085f8d 100755
--- a/constants/type_constants.asm
+++ b/constants/type_constants.asm
@@ -13,8 +13,4 @@ GRASS EQU $16
ELECTRIC EQU $17
PSYCHIC EQU $18
ICE EQU $19
-<<<<<<< HEAD
-DRAGON EQU $1A
-=======
-DRAGON EQU $1A
->>>>>>> d48ea223eaad84af95e4f29043c279b56aa4ae88
+DRAGON EQU $1A \ No newline at end of file
diff --git a/data/town_map_entries.asm b/data/town_map_entries.asm
index d2edd949..0362564f 100755
--- a/data/town_map_entries.asm
+++ b/data/town_map_entries.asm
@@ -1,4 +1,4 @@
-ExternalMapEntries: ; 71313 (1c:5313)
+ExternalMapEntries: ; 7139c (1c:539c)
EMAP $2,$B,PalletTownName
EMAP $2,$8,ViridianCityName
EMAP $2,$3,PewterCityName
@@ -37,7 +37,7 @@ ExternalMapEntries: ; 71313 (1c:5313)
EMAP $A,$1,Route24Name
EMAP $B,$0,Route25Name
-InternalMapEntries: ; 71382 (1c:5382)
+InternalMapEntries: ; 7140b (1c:540b)
IMAP $29,$2,$B,PalletTownName
IMAP $2E,$2,$8,ViridianCityName
IMAP $33,$2,$6,Route2Name
diff --git a/data/town_map_order.asm b/data/town_map_order.asm
index 3bd8c223..2713787c 100755
--- a/data/town_map_order.asm
+++ b/data/town_map_order.asm
@@ -1,4 +1,4 @@
-TownMapOrder: ; 70f11 (1c:4f11)
+TownMapOrder: ; 70f95 (1c:4f95)
db PALLET_TOWN
db ROUTE_1
db VIRIDIAN_CITY
diff --git a/engine/bank3c/main.asm b/engine/bank3c/main.asm
index 92f5634c..4e898e9f 100644
--- a/engine/bank3c/main.asm
+++ b/engine/bank3c/main.asm
@@ -1,4 +1,6 @@
-INCLUDE "engine/bank3c/overworld.asm"
+;INCLUDE "engine/bank3c/overworld.asm"
+
+INCBIN "baserom.gbc",$f0000,$f0274 - $f0000
ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274)
; Reset player status on blackout.
@@ -114,3 +116,4 @@ Pointer_f0a76:: ; f0a76 (3c:4a76)
db $27,$07,$7b,$4a,$ff
db $01,$ec,$02,$ed,$03,$ee,$ff
+INCBIN "baserom.gbc",$f0a82,$f4000 - $f0a82
diff --git a/engine/bank3d/link_menu.asm b/engine/bank3d/link_menu.asm
index 8777aef7..5cf1dc8e 100644
--- a/engine/bank3d/link_menu.asm
+++ b/engine/bank3d/link_menu.asm
@@ -353,10 +353,10 @@ PetitCup:: ; f553a (3d:553a)
ld a,BANK(Pointer_4050b)
call FarCopyData
ld hl,wcd6d
-.loop
+.loop2
ld a,[hli]
cp "@"
- jr nz,.loop
+ jr nz,.loop2
ld a,[hli]
cp $7
jp nc,asm_f5689
diff --git a/engine/bank3d/main.asm b/engine/bank3d/main.asm
index b1d9d2a7..7a2435a5 100644
--- a/engine/bank3d/main.asm
+++ b/engine/bank3d/main.asm
@@ -600,10 +600,10 @@ RemoveItemFromInventory_: ; f5be1 (3d:5be1)
.done
ret
-TrainerInfoTextBoxTileGraphics: INCBIN "gfx/trainer_info.2bpp"
-BlankLeaderNames: INCBIN "gfx/blank_leader_names.2bpp"
-CircleTile: INCBIN "gfx/circle_tile.2bpp"
-BadgeNumbersTileGraphics: INCBIN "gfx/badge_numbers.2bpp"
+TrainerInfoTextBoxTileGraphics: INCBIN "gfx/trainer_info.2bpp"
+BlankLeaderNames: INCBIN "gfx/blank_leader_names.2bpp"
+CircleTile: INCBIN "gfx/circle_tile.2bpp"
+BadgeNumbersTileGraphics: INCBIN "gfx/badge_numbers.2bpp"
Func_f5ea4:: ; f5ea4 (3d:5ea4)
ld a,[W_CURMAP]
diff --git a/engine/bank3f/main.asm b/engine/bank3f/main.asm
index f7d6c99e..71362c2c 100644
--- a/engine/bank3f/main.asm
+++ b/engine/bank3f/main.asm
@@ -289,7 +289,17 @@ Func_fc69a:: ; fc69a (3f:469a)
.asm_fc6c1
ld [wd431],a
ret
-
-Func_fcc08:: ; fcc08 (3f:4c08)
-Func_fcf0c:: ; fcf0c (3f:4f0c)
+INCBIN "baserom.gbc",$fc6c5,$fe66f - $fc6c5
+
+OfficerJennySprite: INCBIN "gfx/sprites/officer_jenny.2bpp"
+PikachuSprite: INCBIN "gfx/sprites/pikachu.2bpp"
+SandshrewSprite: INCBIN "gfx/sprites/sandshrew.2bpp"
+OddishSprite: INCBIN "gfx/sprites/oddish.2bpp"
+BulbasaurSprite: INCBIN "gfx/sprites/bulbasaur.2bpp"
+JigglypuffSprite: INCBIN "gfx/sprites/jigglypuff.2bpp"
+Clefairy2Sprite: INCBIN "gfx/sprites/clefairy2.2bpp"
+ChanseySprite: INCBIN "gfx/sprites/chansey.2bpp"
+SurfingPikachuSprite: INCBIN "gfx/sprites/surfing_pikachu.2bpp"
+JessieSprite: INCBIN "gfx/sprites/jessie.2bpp"
+JamesSprite: INCBIN "gfx/sprites/james.2bpp" \ No newline at end of file
diff --git a/engine/battle/link_battle_versus_text.asm b/engine/battle/link_battle_versus_text.asm
index d2dfe5c0..c29e1c85 100644
--- a/engine/battle/link_battle_versus_text.asm
+++ b/engine/battle/link_battle_versus_text.asm
@@ -2,7 +2,7 @@
DisplayLinkBattleVersusTextBox: ; f41cf (3d:41cf)
call LoadTextBoxTilePatterns
hlCoord 3, 4
- ld b, $70c
+ ld bc, $70c
call TextBoxBorder
hlCoord 4, 5
ld de, wPlayerName
diff --git a/engine/hall_of_fame.asm b/engine/hall_of_fame.asm
index 179fcc82..9481afab 100755
--- a/engine/hall_of_fame.asm
+++ b/engine/hall_of_fame.asm
@@ -58,7 +58,7 @@ AnimateHallOfFame: ; 701c6 (1c:41c6)
ld c, $50
call DelayFrames
hlCoord 2, 13
- ld b, $30e
+ ld bc, $30e
call TextBoxBorder
hlCoord 4, 15
ld de, HallOfFameText
@@ -129,7 +129,7 @@ Func_702a2: ; 702a2 (1c:42a2)
and a
jr z, .asm_702f4
sla e
-.asm_702c7
+.asm_702f4
call .asm_70302
xor a
ld [hSCY], a
@@ -229,7 +229,7 @@ Func_703d1: ; 703d1 (1c:43d1)
ld bc, $60a
call TextBoxBorder
hlCoord 5, 0
- ld b, $209
+ ld bc, $209
call TextBoxBorder
hlCoord 7, 2
ld de, wPlayerName ; wd158
diff --git a/engine/multiply_divide.asm b/engine/multiply_divide.asm
index 3b2ea21e..571096b4 100755
--- a/engine/multiply_divide.asm
+++ b/engine/multiply_divide.asm
@@ -122,9 +122,9 @@ _Divide: ; f6672 (3d:6672)
jr nz, .asm_f66d7
dec b
.asm_f66d7
- ld a, [H_DIVIDEND+4] ; $ff99
+ ld a, [H_DIVISOR] ; $ff99
srl a
- ld [H_REMAINDER], a ; $ff99
+ ld [H_DIVISOR], a ; $ff99
ld a, [H_DIVIDEBUFFER]
rr a
ld [H_DIVIDEBUFFER], a
diff --git a/engine/palettes.asm b/engine/palettes.asm
index c87959f7..5df64c7a 100755
--- a/engine/palettes.asm
+++ b/engine/palettes.asm
@@ -36,7 +36,7 @@ BuildBattlePalPacket: ; 71eda (1c:5eda)
and a
jr z, .asm_71ef9
ld hl, wPartyMon1
- ld a, [wPlayerMonNumber
+ ld a, [wPlayerMonNumber]
ld bc, wPartyMon2 - wPartyMon1
call AddNTimes
.asm_71ef9
@@ -1132,10 +1132,11 @@ Func_725be:: ; 725be (1c:65be)
callba Func_bf450 ; 2f:7250
ret
-INCLUDE "data/sgb_packets.asm"
+INCBIN "baserom.gbc",$725e2,$734b9 - $725e2
+;INCLUDE "data/sgb_packets.asm"
-INCLUDE "data/mon_palettes.asm"
+;INCLUDE "data/mon_palettes.asm"
-INCLUDE "data/super_palettes.asm"
+;INCLUDE "data/super_palettes.asm"
-INCLUDE "data/sgb_border.asm" \ No newline at end of file
+;INCLUDE "data/sgb_border.asm" \ No newline at end of file
diff --git a/engine/town_map.asm b/engine/town_map.asm
index 5a718519..dafcd926 100755
--- a/engine/town_map.asm
+++ b/engine/town_map.asm
@@ -1,5 +1,5 @@
-DisplayTownMap: ; 70e3e (1c:4e3e)
- call LoadTownMap
+DisplayTownMap: ; 70eb7 (1c:4eb7)
+ ;call LoadTownMap
ld hl, wUpdateSpritesEnabled
ld a, [hl]
push af
@@ -10,7 +10,7 @@ DisplayTownMap: ; 70e3e (1c:4e3e)
ld a, [W_CURMAP] ; W_CURMAP
push af
ld b, $0
- call Func_711c4
+ call Func_7124e
hlCoord 1, 0
ld de, wcd6d
call PlaceString
@@ -25,9 +25,9 @@ DisplayTownMap: ; 70e3e (1c:4e3e)
xor a
ld [wWhichTrade], a ; wWhichTrade
pop af
- jr Func_70e92
+ jr Func_70f08
-Func_70e7e: ; 70e7e (1c:4e7e)
+Func_70ef4: ; 70ef4 (1c:4ef4)
ld hl, wTileMap
ld bc, $114
call ClearScreenArea
@@ -38,24 +38,24 @@ Func_70e7e: ; 70e7e (1c:4e7e)
add hl, bc
ld a, [hl]
-Func_70e92: ; 70e92 (1c:4e92)
+Func_70e92: ; 70f08 (1c:4f08)
ld de, wHPBarMaxHP
call Func_712f1
ld a, [de]
push hl
- call Func_71258
+ call Func_712e1
ld a, $4
ld [wcd5b], a
ld hl, wOAMBuffer + $10
call Func_71279
pop hl
ld de, wcd6d
-.asm_70eac
+.loop
ld a, [hli]
ld [de], a
inc de
- cp $50
- jr nz, .asm_70eac
+ cp "@"
+ jr nz, .loop
hlCoord 1, 0
ld de, wcd6d
call PlaceString
@@ -63,60 +63,66 @@ Func_70e92: ; 70e92 (1c:4e92)
ld de, wTileMapBackup + 16
ld bc, $10
call CopyData
-.asm_70ec8
+.asm_70f3e
call TownMapSpriteBlinkingAnimation
call JoypadLowSensitivity
ld a, [hJoy5]
ld b, a
- and $c3
- jr z, .asm_70ec8
+ and D_DOWN | D_UP | B_BUTTON | A_BUTTON
+ jr z, .asm_70f3e
ld a, (SFX_02_3c - SFX_Headers_02) / 3
call PlaySound
bit 6, b
- jr nz, .asm_70ef2
+ jr nz, .asm_70f68
bit 7, b
- jr nz, .asm_70f01
+ jr nz, .asm_70f77
xor a
ld [wTownMapSpriteBlinkingEnabled], a
ld [hJoy7], a
ld [wTownMapSpriteBlinkingCounter], a
- call Func_711ab
+ call Func_71235
pop hl
pop af
ld [hl], a
ret
-.asm_70ef2
+.asm_70f68
ld a, [wWhichTrade] ; wWhichTrade
inc a
cp $2f
- jr nz, .asm_70efb
+ jr nz, .asm_70f71
xor a
-.asm_70efb
+.asm_70f71
ld [wWhichTrade], a ; wWhichTrade
- jp Func_70e7e
-.asm_70f01
+ jp Func_70ef4
+.asm_70f77
ld a, [wWhichTrade] ; wWhichTrade
dec a
cp $ff
- jr nz, .asm_70f0b
+ jr nz, .asm_70f81
ld a, $2e
-.asm_70f0b
+.asm_70f81
ld [wWhichTrade], a ; wWhichTrade
- jp Func_70e7e
-
+ jp Func_70ef4
+.asm_70f87
+ ld a,[hJoy5]
+ and D_DOWN | D_UP | B_BUTTON | A_BUTTON
+ ret z
+ callab Func_f4000
+ ret
+
INCLUDE "data/town_map_order.asm"
-TownMapCursor: ; 70f40 (1c:4f40)
+TownMapCursor: ; 70fc4 (1c:4fc4)
INCBIN "gfx/town_map_cursor.1bpp"
-LoadTownMap_Nest: ; 70f60 (1c:4f60)
+LoadTownMap_Nest: ; 70fe4 (1c:4fe4)
call LoadTownMap
ld hl, wUpdateSpritesEnabled
ld a, [hl]
push af
ld [hl], $ff
push hl
- call Func_711ef
+ call Func_71279
call GetMonName
hlCoord 1, 0
call PlaceString
@@ -125,29 +131,32 @@ LoadTownMap_Nest: ; 70f60 (1c:4f60)
ld de, MonsNestText
call PlaceString
call WaitForTextScrollButtonPress
- call Func_711ab
+ call Func_71235
pop hl
pop af
ld [hl], a
ret
-MonsNestText: ; 70f89 (1c:4f89)
+MonsNestText: ; 7100d (1c:500d)
db "'s NEST@"
-LoadTownMap_Fly: ; 70f90 (1c:4f90)
+LoadTownMap_Fly: ; 71014 (1c:5014)
call ClearSprites
call LoadTownMap
+ ld a, $1
+ ld [hJoy7], a
call LoadPlayerSpriteGraphics
call LoadFontTilePatterns
ld de, BirdSprite ; $4d80
+ ld b, BANK(BirdSprite)
+ ld c, $c
ld hl, vSprites + $40
- ld bc, (BANK(BirdSprite) << 8) + $0c
call CopyVideoData
ld de, TownMapUpArrow ; $5093
ld hl, vChars1 + $6d0
ld bc, (BANK(TownMapUpArrow) << 8) + $01
call CopyVideoDataDouble
- call Func_71070
+ call Func_710fb
ld hl, wUpdateSpritesEnabled
ld a, [hl]
push af
@@ -158,7 +167,7 @@ LoadTownMap_Fly: ; 70f90 (1c:4f90)
call PlaceString
ld a, [W_CURMAP] ; W_CURMAP
ld b, $0
- call Func_711c4
+ call Func_7124e
ld hl, wTrainerEngageDistance
deCoord 18, 0
@@ -173,36 +182,36 @@ LoadTownMap_Fly: ; 70f90 (1c:4f90)
pop hl
ld a, [hl]
ld b, $4
- call Func_711c4
+ call Func_7124e
hlCoord 3, 0
ld de, wcd6d
call PlaceString
ld c, $f
call DelayFrames
hlCoord 18, 0
- ld [hl], $ed
+ ld [hl], "▶"
hlCoord 19, 0
ld [hl], $ee
pop hl
-.asm_71004
+.asm_7108d
push hl
call DelayFrame
call JoypadLowSensitivity
ld a, [hJoy5]
ld b, a
pop hl
- and $c3
- jr z, .asm_71004
+ and D_DOWN | D_UP | B_BUTTON | A_BUTTON
+ jr z, .asm_7108b
bit 0, b
- jr nz, .asm_71026
+ jr nz, .asm_710af
ld a, (SFX_02_3c - SFX_Headers_02) / 3
call PlaySound
bit 6, b
- jr nz, .asm_71042
+ jr nz, .asm_710cd
bit 7, b
- jr nz, .asm_71058
- jr .asm_71037
-.asm_71026
+ jr nz, .asm_710e3
+ jr .asm_710c0
+.asm_710af
ld a, (SFX_02_3e - SFX_Headers_02) / 3
call PlaySound
ld a, [hl]
@@ -211,43 +220,44 @@ LoadTownMap_Fly: ; 70f90 (1c:4f90)
set 3, [hl]
inc hl
set 7, [hl]
-.asm_71037
+.asm_710c0
xor a
ld [wTownMapSpriteBlinkingEnabled], a
+ ld [hJoy7], a
call GBPalWhiteOutWithDelay3
pop hl
pop af
ld [hl], a
ret
-.asm_71042
+.asm_710cd
deCoord 18, 0
inc hl
ld a, [hl]
cp $ff
- jr z, .asm_71052
+ jr z, .asm_710dd
cp $fe
- jr z, .asm_71042
+ jr z, .asm_710cd
jp .townMapFlyLoop
-.asm_71052
+.asm_710dd
ld hl, wTrainerEngageDistance
jp .townMapFlyLoop
-.asm_71058
+.asm_710e3
deCoord 19, 0
dec hl
ld a, [hl]
cp $ff
- jr z, .asm_71068
+ jr z, .asm_710f3
cp $fe
- jr z, .asm_71058
+ jr z, .asm_710e3
jp .townMapFlyLoop
-.asm_71068
+.asm_710f3
ld hl, wcd49
- jr .asm_71058
+ jr .asm_710e3
-ToText: ; 7106d (1c:506d)
+ToText: ; 710f8 (1c:50f8)
db "To@"
-Func_71070: ; 71070 (1c:5070)
+Func_710fb: ; 710fb (1c:50fb)
ld hl, wWhichTrade ; wWhichTrade
ld [hl], $ff
inc hl
@@ -256,31 +266,30 @@ Func_71070: ; 71070 (1c:5070)
ld a, [W_TOWNVISITEDFLAG + 1]
ld d, a
ld bc, $b
-.asm_71081
+.asm_7110c
srl d
rr e
ld a, $fe
- jr nc, .asm_7108a
+ jr nc, .asm_71115
ld a, b
-.asm_7108a
+.asm_71115
ld [hl], a
inc hl
inc b
dec c
- jr nz, .asm_71081
+ jr nz, .asm_7110c
ld [hl], $ff
ret
-TownMapUpArrow: ; 71093 (1c:5093)
+TownMapUpArrow: ; 7111e (1c:511e)
INCBIN "gfx/up_arrow.1bpp"
-LoadTownMap: ; 7109b (1c:509b)
+LoadTownMap: ; 71126 (1c:5126)
call GBPalWhiteOutWithDelay3
call ClearScreen
call UpdateSprites
ld hl, wTileMap
- ld b, $12
- ld c, $12
+ ld bc, $1212
call TextBoxBorder
call DisableLCD
ld hl, WorldMapTileGraphics ; $65a8
@@ -288,7 +297,7 @@ LoadTownMap: ; 7109b (1c:509b)
ld bc, $100
ld a, BANK(WorldMapTileGraphics)
call FarCopyData2
- ld hl, MonNestIcon ; $56be
+ ld hl, MonNestIcon ; $574b
ld de, vSprites + $40
ld bc, $8
ld a, BANK(MonNestIcon)
@@ -298,7 +307,7 @@ LoadTownMap: ; 7109b (1c:509b)
.asm_710d3
ld a, [de]
and a
- jr z, .asm_710e9
+ jr z, .asm_71173
ld b, a
and $f
ld c, a
@@ -306,13 +315,13 @@ LoadTownMap: ; 7109b (1c:509b)
swap a
and $f
add $60
-.asm_710e2
+.loop
ld [hli], a
dec c
- jr nz, .asm_710e2
+ jr nz, .loop
inc de
- jr .asm_710d3
-.asm_710e9
+ jr .asm_7115d
+.asm_71073
call EnableLCD
ld b, $2
call GoPAL_SET
@@ -324,11 +333,11 @@ LoadTownMap: ; 7109b (1c:509b)
ld [wTownMapSpriteBlinkingEnabled], a
ret
-CompressedMap: ; 71100 (1c:5100)
+CompressedMap: ; 7118a (1c:518a)
; you can decompress this file with the redrle program in the extras/ dir
INCBIN "gfx/town_map.rle"
-Func_711ab: ; 711ab (1c:51ab)
+Func_71235: ; 71235 (1c:5235)
xor a
ld [wTownMapSpriteBlinkingEnabled], a
call GBPalWhiteOut
@@ -339,7 +348,7 @@ Func_711ab: ; 711ab (1c:51ab)
call UpdateSprites
jp GoPAL_SET_CF1C
-Func_711c4: ; 711c4 (1c:51c4)
+Func_711c4: ; 7124e (1c:524e)
push af
ld a, b
ld [wcd5b], a
@@ -348,72 +357,72 @@ Func_711c4: ; 711c4 (1c:51c4)
call Func_712f1
ld a, [de]
push hl
- call Func_71258
- call Func_7126d
+ call Func_712e1
+ call Func_712f6
pop hl
ld de, wcd6d
-.asm_711dc
+.asm_71266
ld a, [hli]
ld [de], a
inc de
- cp $50
- jr nz, .asm_711dc
+ cp "@"
+ jr nz, .asm_71266
ld hl, wOAMBuffer
ld de, wTileMapBackup
ld bc, $a0
jp CopyData
-Func_711ef: ; 711ef (1c:51ef)
+Func_71279: ; 711ef (1c:51ef)
callba FindWildLocationsOfMon
- call Func_712d9
+ call Func_71362
ld hl, wOAMBuffer
ld de, wBuffer
-.asm_71200
+.asm_7128a
ld a, [de]
cp $ff
- jr z, .asm_7121d
+ jr z, .asm_712a7
and a
- jr z, .asm_7121a
+ jr z, .asm_712a4
push hl
- call Func_712f1
+ call Func_7137a
pop hl
ld a, [de]
cp $19
- jr z, .asm_7121a
- call Func_71258
+ jr z, .asm_712a4
+ call Func_712e1
ld a, $4
ld [hli], a
xor a
ld [hli], a
-.asm_7121a
+.asm_712a4
inc de
- jr .asm_71200
-.asm_7121d
+ jr .asm_7128a
+.asm_712a7
ld a, l
and a
- jr nz, .asm_71236
+ ; continue from here
+ jr nz, .asm_712bf
hlCoord 1, 7
- ld b, $2
- ld c, $f
+ ld bc, $20f
call TextBoxBorder
hlCoord 2, 9
ld de, AreaUnknownText
call PlaceString
- jr .asm_7123e
+ jr .asm_712c7
.asm_71236
ld a, [W_CURMAP] ; W_CURMAP
ld b, $0
- call Func_711c4
-.asm_7123e
+ call Func_7124e
+.asm_712c7
ld hl, wOAMBuffer
ld de, wTileMapBackup
ld bc, $a0
jp CopyData
-AreaUnknownText: ; 7124a (1c:524a)
+AreaUnknownText: ; 712d3 (1c:52d3)
db " AREA UNKNOWN@"
-Func_71258: ; 71258 (1c:5258)
+Func_712e1: ; 712e1 (1c:52e1)
push af
and $f0
srl a
@@ -429,14 +438,14 @@ Func_71258: ; 71258 (1c:5258)
ld [hli], a
ret
-Func_7126d: ; 7126d (1c:526d)
+Func_712f6: ; 712f6 (1c:52f6)
ld a, [wcd5b]
and a
ld hl, wOAMBuffer + $90
- jr z, Func_71279
+ jr z, Func_71302
ld hl, wOAMBuffer + $80
-Func_71279: ; 71279 (1c:5279)
+Func_71302: ; 71302 (1c:5302)
push hl
ld hl, $fcfc
add hl, bc
@@ -444,7 +453,7 @@ Func_71279: ; 71279 (1c:5279)
ld c, l
pop hl
-WriteAsymmetricMonPartySpriteOAM: ; 71281 (1c:5281)
+WriteAsymmetricMonPartySpriteOAM: ; 7130a (1c:530a)
; Writes 4 OAM blocks for a helix mon party sprite, since is does not have
; a vertical line of symmetry.
ld de, $202
@@ -477,7 +486,7 @@ WriteAsymmetricMonPartySpriteOAM: ; 71281 (1c:5281)
jr nz, .loop
ret
-WriteSymmetricMonPartySpriteOAM: ; 712a6 (1c:52a6)
+WriteSymmetricMonPartySpriteOAM: ; 7132f (1c:532f)
; Writes 4 OAM blocks for a mon party sprite other than a helix. All the
; sprites other than the helix one have a vertical line of symmetry which allows
; the X-flip OAM bit to be used so that only 2 rather than 4 tile patterns are
@@ -519,9 +528,9 @@ WriteSymmetricMonPartySpriteOAM: ; 712a6 (1c:52a6)
jr nz, .loop
ret
-Func_712d9: ; 712d9 (1c:52d9)
+Func_71362: ; 71362 (1c:5362)
ld de, wHPBarMaxHP
-.asm_712dc
+.asm_71365
ld a, [de]
inc de
cp $ff
@@ -529,32 +538,32 @@ Func_712d9: ; 712d9 (1c:52d9)
ld c, a
ld l, e
ld h, d
-.asm_712e4
+.asm_7136d
ld a, [hl]
cp $ff
- jr z, .asm_712dc
+ jr z, .asm_71365
cp c
- jr nz, .asm_712ee
+ jr nz, .asm_71377
xor a
ld [hl], a
-.asm_712ee
+.asm_71277
inc hl
- jr .asm_712e4
+ jr .asm_7126d
-Func_712f1: ; 712f1 (1c:52f1)
+Func_7137a: ; 7137a (1c:537a)
cp REDS_HOUSE_1F
- jr c, .asm_71304
+ jr c, .asm_7138d
ld bc, $4
ld hl, InternalMapEntries ; $5382
-.asm_712fb
+.asm_71384
cp [hl]
- jr c, .asm_71301
+ jr c, .asm_7138a
add hl, bc
- jr .asm_712fb
-.asm_71301
+ jr .asm_71284
+.asm_7138a
inc hl
- jr .asm_7130d
-.asm_71304
+ jr .asm_71384
+.asm_7138d
ld hl, ExternalMapEntries ; $5313
ld c, a
ld b, $0
@@ -569,14 +578,16 @@ Func_712f1: ; 712f1 (1c:52f1)
ld l, a
ret
-INCLUDE "data/town_map_entries.asm"
+INCBIN "baserom.gbc",$7139c,$71753 - $7139c
+
+;INCLUDE "data/town_map_entries.asm"
-INCLUDE "text/map_names.asm"
+;INCLUDE "text/map_names.asm" ; TODO: relabel addresses
-MonNestIcon: ; 716be (1c:56be)
- INCBIN "gfx/mon_nest_icon.1bpp"
+;MonNestIcon: ; 716be (1c:56be) ; relabel this too
+; INCBIN "gfx/mon_nest_icon.1bpp"
-TownMapSpriteBlinkingAnimation: ; 716c6 (1c:56c6)
+TownMapSpriteBlinkingAnimation: ; 71753 (1c:5753)
ld a, [wTownMapSpriteBlinkingCounter]
inc a
cp 25
diff --git a/home.asm b/home.asm
index 79dec0c6..91eb27a4 100644
--- a/home.asm
+++ b/home.asm
@@ -1083,7 +1083,7 @@ Func_159b:: ; 159b (0:159b)
ld a,[H_LOADEDROMBANK]
ld b,a
push af
- callsb Func_fd2a1
+ callbs Func_fd2a1
pop af
call BankswitchCommon
ret
@@ -1572,7 +1572,7 @@ DisplayListMenuID:: ; 2ae0 (0:2ae0)
call DisplayTextBoxID ; draw the menu text box
call UpdateSprites ; disable sprites behind the text box
; the code up to .skipMovingSprites appears to be useless
- hlCoord 4, 2 ; coordinates of upper left corner of menu text box
+ coord hl, 4, 2 ; coordinates of upper left corner of menu text box
ld de,$090e ; height and width of menu text box
ld a,[wListMenuID]
and a ; is it a PC pokemon list?
@@ -1613,7 +1613,7 @@ DisplayListMenuIDLoop:: ; 2b4d (0:2b4d)
call DelayFrames
xor a
ld [wCurrentMenuItem],a
- hlCoord 5, 4
+ coord hl, 5, 4
ld a,l
ld [wMenuCursorLocation],a
ld a,h
@@ -1732,21 +1732,21 @@ DisplayListMenuIDLoop:: ; 2b4d (0:2b4d)
DisplayChooseQuantityMenu:: ; 2c51 (0:2c51)
; text box dimensions/coordinates for just quantity
- hlCoord 15, 9
- ld b,$103 ; height and width
+ coord hl, 15, 9
+ ld bc,$103 ; height and width
ld a,[wListMenuID]
cp a,PRICEDITEMLISTMENU
jr nz,.drawTextBox
; text box dimensions/coordinates for quantity and price
- hlCoord 7, 9
+ coord hl, 7, 9
ld bc,$10b ; height and width
.drawTextBox
call TextBoxBorder
- hlCoord 16, 10
+ coord hl, 16, 10
ld a,[wListMenuID]
cp a,PRICEDITEMLISTMENU
jr nz,.printInitialQuantity
- hlCoord 8, 10
+ coord hl, 8, 10
.printInitialQuantity
ld de,InitialQuantityText
call PlaceString
@@ -1786,7 +1786,7 @@ DisplayChooseQuantityMenu:: ; 2c51 (0:2c51)
ld a,[wcf97] ; max quantity
ld [hl],a
.handleNewQuantity
- hlCoord 17, 10
+ coord hl, 17, 10
ld a,[wListMenuID]
cp a,PRICEDITEMLISTMENU
jr nz,.printQuantity
@@ -1825,13 +1825,13 @@ DisplayChooseQuantityMenu:: ; 2c51 (0:2c51)
ld a,[$ffa4]
ld [$ffa1],a
.skipHalvingPrice
- hlCoord 12, 10
+ coord hl, 12, 10
ld de,SpacesBetweenQuantityAndPriceText
call PlaceString
ld de,$ff9f ; total price
ld c,$a3
call PrintBCDNumber
- hlCoord 9, 10
+ coord hl, 9, 10
.printQuantity
ld de,wcf96 ; current quantity
ld bc,$8102 ; print leading zeroes, 1 byte, 2 digits
@@ -1870,7 +1870,7 @@ ExitListMenu:: ; 2d33 (0:2d33)
ret
PrintListMenuEntries:: ; 2d52 (0:2d52)
- hlCoord 5, 3
+ coord hl, 5, 3
ld b,$09
ld c,$0e
call ClearScreenArea
@@ -1895,7 +1895,7 @@ PrintListMenuEntries:: ; 2d52 (0:2d52)
jr nc,.noCarry
inc d
.noCarry
- hlCoord 6, 4 ; coordinates of first list entry name
+ coord hl, 6, 4 ; coordinates of first list entry name
ld b,4 ; print 4 names
.loop
ld a,b
@@ -2409,8 +2409,8 @@ Func_3082:: ; 3082 (0:3082)
ld a,[H_LOADEDROMBANK]
push af
call Func_27c2
- callsb Func_2131e
- callsb Func_909d
+ callbs Func_2131e
+ callbs Func_909d
pop af
call BankswitchCommon
ret
@@ -3338,7 +3338,7 @@ Func_35f7:: ; 35f7 (0:35f7)
InitYesNoTextBoxParameters:: ; 3602 (0:3602)
xor a ; YES_NO_MENU
ld [wTwoOptionMenuID], a
- hlCoord 14, 7
+ coord hl, 14, 7
ld bc, $80f
ret
@@ -3346,7 +3346,7 @@ YesNoChoicePokeCenter:: ; 360d (0:360d)
call SaveScreenTilesToBuffer1
ld a, HEAL_CANCEL_MENU
ld [wTwoOptionMenuID], a
- hlCoord 11, 6
+ coord hl, 11, 6
ld bc, $80c
jr DisplayYesNoChoice
@@ -3354,7 +3354,7 @@ Func_361d:: ; 361d (0:361d)
call SaveScreenTilesToBuffer1
ld a, WIDE_YES_NO_MENU
ld [wTwoOptionMenuID], a
- hlCoord 12, 7
+ coord hl, 12, 7
ld bc, $080d
DisplayYesNoChoice:: ; 362b (0:362b)
ld a, TWO_OPTION_MENU
@@ -3680,7 +3680,7 @@ GetItemPrice:: ; 37d2 (0:37d2)
ld [hItemPrice], a
jr .asm_380b
.getTMPrice
- callsb GetMachinePrice
+ callbs GetMachinePrice
.asm_380b
ld de, hItemPrice
pop af
@@ -3771,7 +3771,7 @@ WaitForTextScrollButtonPress:: ; 3865 (0:3865)
jr z, .skipAnimation
callab TownMapSpriteBlinkingAnimation ; 1c:5753
.skipAnimation
- hlCoord 18, 16
+ coord hl, 18, 16
call HandleDownArrowBlinkTiming
pop hl
call JoypadLowSensitivity
@@ -4222,7 +4222,7 @@ HandleMenuInputPokemonSelection:: ; 3aaf (0:3aaf)
and a ; was a key pressed?
jr nz,.keyPressed
push hl
- hlCoord 18, 11 ; coordinates of blinking down arrow in some menus
+ coord hl, 18, 11 ; coordinates of blinking down arrow in some menus
call HandleDownArrowBlinkTiming ; blink down arrow (if any)
pop hl
ld a,[wMenuJoypadPollCount]
@@ -4481,7 +4481,7 @@ PrintText:: ; 3c36 (0:3c36)
call Delay3
pop hl
Func_3c46:: ; 3c46 (0:3c46)
- bcCoord 1, 14
+ coord bc, 1, 14
jp TextCommandProcessor
FarPrintText:: ; 3c4c (0:3c4c)
@@ -4959,7 +4959,7 @@ CheckForHiddenObjectOrBookshelfOrCardKeyDoor:: ; 3eb5 (0:3eb5)
bit 0, a ; A button
jr z, .nothingFound
; A button is pressed
- callsb CheckForHiddenObject
+ callbs CheckForHiddenObject
ld a, [$ffee]
and a
jr nz, .hiddenObjectNotFound
diff --git a/home/overworld.asm b/home/overworld.asm
index f16b58cf..e9472161 100644
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -766,7 +766,7 @@ HandleFlyWarpOrDungeonWarp:: ; 0794 (0:0794)
res 5, [hl] ; forced to ride bike
call LeaveMapAnim
call LoadPlayerSpriteGraphics
- callsb SpecialWarpIn
+ callbs SpecialWarpIn
jp SpecialEnterMap
LeaveMapAnim:: ; 07bc (0:07bc)
diff --git a/macros.asm b/macros.asm
index a241672b..dd7d6cf9 100644
--- a/macros.asm
+++ b/macros.asm
@@ -71,7 +71,7 @@ switchbank: MACRO
call BankswitchCommon
ENDM
-callsb: MACRO
+callbs: MACRO
ld a, BANK(\1)
call BankswitchCommon
call \1
@@ -89,6 +89,13 @@ callab: MACRO
call Bankswitch
ENDM
+;\1 = r
+;\2 = X
+;\3 = Y
+coord: MACRO
+ ld \1, wTileMap + 20 * \3 + \2
+ ENDM
+
bcd2: MACRO
dn ((\1) / 1000) % 10, ((\1) / 100) % 10
dn ((\1) / 10) % 10, (\1) % 10
@@ -275,6 +282,43 @@ tx_pre_jump: MACRO
jp PrintPredefTextID
ENDM
+WALK EQU $FE
+STAY EQU $FF
+
+DOWN EQU $D0
+UP EQU $D1
+LEFT EQU $D2
+RIGHT EQU $D3
+NONE EQU $FF
+
+;\1 sprite id
+;\2 x position
+;\3 y position
+;\4 movement (WALK/STAY)
+;\5 range or direction
+;\6 text id
+;\7 items only: item id
+;\7 trainers only: trainer class/pokemon id
+;\8 trainers only: trainer number/pokemon level
+object: MACRO
+ db \1
+ db \3 + 4
+ db \2 + 4
+ db \4
+ db \5
+ IF (_NARG > 7)
+ db TRAINER | \6
+ db \7
+ db \8
+ ELSE
+ IF (_NARG > 6)
+ db ITEM | \6
+ db \7
+ ELSE
+ db \6
+ ENDC
+ ENDC
+ENDM
;1_channel EQU $00
;2_channels EQU $40
diff --git a/yellow/audio.asm b/yellow/audio.asm
index e94c7db5..973df848 100755
--- a/yellow/audio.asm
+++ b/yellow/audio.asm
@@ -1,2 +1,2 @@
-INCLUDE "yellow.asm"
-INCLUDE "audio.asm"
+;INCLUDE "yellow.asm"
+;INCLUDE "audio.asm"
diff --git a/yellow/main.asm b/yellow/main.asm
index 36c88720..ea2546e9 100755
--- a/yellow/main.asm
+++ b/yellow/main.asm
@@ -1,2 +1,802 @@
INCLUDE "yellow.asm"
-INCLUDE "main.asm"
+INCLUDE "constants.asm"
+
+NPC_SPRITES_1 EQU $4
+NPC_SPRITES_2 EQU $5
+
+GFX EQU $4
+
+PICS_1 EQU $9
+PICS_2 EQU $A
+PICS_3 EQU $B
+PICS_4 EQU $C
+PICS_5 EQU $D
+
+
+SECTION "home",ROM0
+
+INCLUDE "home.asm"
+
+SECTION "bank01",ROMX,BANK[$01]
+
+INCLUDE "data/facing.asm"
+INCLUDE "engine/battle/safari_zone.asm"
+
+INCBIN "baserom.gbc",$414b,$8000 - $414b
+
+
+SECTION "bank02",ROMX,BANK[$02]
+
+INCBIN "baserom.gbc",$8000,$c000 - $8000
+
+
+SECTION "bank03",ROMX,BANK[$03]
+
+INCBIN "baserom.gbc",$c000,$e91b - $c000
+
+GymLeaderFaceAndBadgeTileGraphics: ; e91b (3:691b)
+ INCBIN "gfx/badges.2bpp"
+
+INCBIN "baserom.gbc",$ed1b,$10000 - $ed1b
+
+
+SECTION "Graphics", ROMX, BANK[GFX]
+
+PokemonLogoJapanGraphics: INCBIN "gfx/pokemon_logo_japan.2bpp"
+FontGraphics: INCBIN "gfx/font.1bpp"
+ABTiles: INCBIN "gfx/AB.2bpp"
+HpBarAndStatusGraphics: INCBIN "gfx/hp_bar_and_status.2bpp"
+BattleHudTiles1: INCBIN "gfx/battle_hud1.1bpp"
+BattleHudTiles2: INCBIN "gfx/battle_hud2.1bpp"
+BattleHudTiles3: INCBIN "gfx/battle_hud3.1bpp"
+NintendoCopyrightLogoGraphics: INCBIN "gfx/copyright.2bpp"
+GamefreakLogoGraphics: INCBIN "gfx/gamefreak.2bpp"
+NineTile: INCBIN "gfx/9_tile.2bpp"
+TextBoxGraphics: INCBIN "gfx/text_box.2bpp"
+PokedexTileGraphics: INCBIN "gfx/pokedex.2bpp"
+WorldMapTileGraphics: INCBIN "gfx/town_map.2bpp"
+PlayerCharacterTitleGraphics: INCBIN "gfx/player_title.2bpp"
+
+INCBIN "baserom.gbc",$11468,$11a97 - $11468
+
+RedPicFront:: INCBIN "pic/ytrainer/red.pic"
+ShrinkPic1:: INCBIN "pic/trainer/shrink1.pic"
+ShrinkPic2:: INCBIN "pic/trainer/shrink2.pic"
+
+INCBIN "baserom.gbc",$11c22,$12365 - $11c22
+
+
+SECTION "NPC Sprites 1", ROMX, BANK[NPC_SPRITES_1]
+
+OakAideSprite: INCBIN "gfx/sprites/oak_aide.2bpp"
+RockerSprite: INCBIN "gfx/sprites/rocker.2bpp"
+SwimmerSprite: INCBIN "gfx/sprites/swimmer.2bpp"
+WhitePlayerSprite: INCBIN "gfx/sprites/white_player.2bpp"
+GymHelperSprite: INCBIN "gfx/sprites/gym_helper.2bpp"
+OldPersonSprite: INCBIN "gfx/sprites/old_person.2bpp"
+MartGuySprite: INCBIN "gfx/sprites/mart_guy.2bpp"
+FisherSprite: INCBIN "gfx/sprites/fisher.2bpp"
+OldMediumWomanSprite: INCBIN "gfx/sprites/old_medium_woman.2bpp"
+NurseSprite: INCBIN "gfx/sprites/nurse.2bpp"
+CableClubWomanSprite: INCBIN "gfx/sprites/cable_club_woman.2bpp"
+MrMasterballSprite: INCBIN "gfx/sprites/mr_masterball.2bpp"
+LaprasGiverSprite: INCBIN "gfx/sprites/lapras_giver.2bpp"
+WardenSprite: INCBIN "gfx/sprites/warden.2bpp"
+SsCaptainSprite: INCBIN "gfx/sprites/ss_captain.2bpp"
+Fisher2Sprite: INCBIN "gfx/sprites/fisher2.2bpp"
+BlackbeltSprite: INCBIN "gfx/sprites/blackbelt.2bpp"
+GuardSprite: INCBIN "gfx/sprites/guard.2bpp"
+BallSprite: INCBIN "gfx/sprites/ball.2bpp"
+OmanyteSprite: INCBIN "gfx/sprites/omanyte.2bpp"
+BoulderSprite: INCBIN "gfx/sprites/boulder.2bpp"
+PaperSheetSprite: INCBIN "gfx/sprites/paper_sheet.2bpp"
+BookMapDexSprite: INCBIN "gfx/sprites/book_map_dex.2bpp"
+ClipboardSprite: INCBIN "gfx/sprites/clipboard.2bpp"
+SnorlaxSprite: INCBIN "gfx/sprites/snorlax.2bpp"
+OldAmberSprite: INCBIN "gfx/sprites/old_amber.2bpp"
+LyingOldManSprite: INCBIN "gfx/sprites/lying_old_man.2bpp"
+QuestionMarkSprite: INCBIN "gfx/sprites/question_mark.2bpp"
+
+INCBIN "baserom.gbc",$13765,$14000 - $13765
+
+
+SECTION "NPC Sprites 2", ROMX, BANK[NPC_SPRITES_2]
+
+INCBIN "baserom.gbc",$14000,$143f1 - $14000
+
+RedCyclingSprite: INCBIN "gfx/sprites/cycling.2bpp"
+RedSprite: INCBIN "gfx/sprites/red.2bpp"
+BlueSprite: INCBIN "gfx/sprites/blue.2bpp"
+OakSprite: INCBIN "gfx/sprites/oak.2bpp"
+BugCatcherSprite: INCBIN "gfx/sprites/bug_catcher.2bpp"
+SlowbroSprite: INCBIN "gfx/sprites/slowbro.2bpp"
+LassSprite: INCBIN "gfx/sprites/lass.2bpp"
+BlackHairBoy1Sprite: INCBIN "gfx/sprites/black_hair_boy_1.2bpp"
+LittleGirlSprite: INCBIN "gfx/sprites/little_girl.2bpp"
+BirdSprite: INCBIN "gfx/sprites/bird.2bpp"
+FatBaldGuySprite: INCBIN "gfx/sprites/fat_bald_guy.2bpp"
+GamblerSprite: INCBIN "gfx/sprites/gambler.2bpp"
+BlackHairBoy2Sprite: INCBIN "gfx/sprites/black_hair_boy_2.2bpp"
+GirlSprite: INCBIN "gfx/sprites/girl.2bpp"
+HikerSprite: INCBIN "gfx/sprites/hiker.2bpp"
+FoulardWomanSprite: INCBIN "gfx/sprites/foulard_woman.2bpp"
+GentlemanSprite: INCBIN "gfx/sprites/gentleman.2bpp"
+DaisySprite: INCBIN "gfx/sprites/daisy.2bpp"
+BikerSprite: INCBIN "gfx/sprites/biker.2bpp"
+SailorSprite: INCBIN "gfx/sprites/sailor.2bpp"
+CookSprite: INCBIN "gfx/sprites/cook.2bpp"
+BikeShopGuySprite: INCBIN "gfx/sprites/bike_shop_guy.2bpp"
+MrFujiSprite: INCBIN "gfx/sprites/mr_fuji.2bpp"
+GiovanniSprite: INCBIN "gfx/sprites/giovanni.2bpp"
+RocketSprite: INCBIN "gfx/sprites/rocket.2bpp"
+MediumSprite: INCBIN "gfx/sprites/medium.2bpp"
+WaiterSprite: INCBIN "gfx/sprites/waiter.2bpp"
+ErikaSprite: INCBIN "gfx/sprites/erika.2bpp"
+MomGeishaSprite: INCBIN "gfx/sprites/mom_geisha.2bpp"
+BrunetteGirlSprite: INCBIN "gfx/sprites/brunette_girl.2bpp"
+LanceSprite: INCBIN "gfx/sprites/lance.2bpp"
+MomSprite: INCBIN "gfx/sprites/mom.2bpp"
+BaldingGuySprite: INCBIN "gfx/sprites/balding_guy.2bpp"
+YoungBoySprite: INCBIN "gfx/sprites/young_boy.2bpp"
+GameboyKidSprite: INCBIN "gfx/sprites/gameboy_kid.2bpp"
+ClefairySprite: INCBIN "gfx/sprites/clefairy.2bpp"
+AgathaSprite: INCBIN "gfx/sprites/agatha.2bpp"
+BrunoSprite: INCBIN "gfx/sprites/bruno.2bpp"
+LoreleiSprite: INCBIN "gfx/sprites/lorelei.2bpp"
+SeelSprite: INCBIN "gfx/sprites/seel.2bpp"
+
+INCBIN "baserom.gbc",$17c31,$18000 - $17c31
+
+
+SECTION "bank06",ROMX,BANK[$06]
+
+INCBIN "baserom.gbc",$18000,$1c000 - $18000
+
+
+SECTION "bank07",ROMX,BANK[$07]
+
+INCBIN "baserom.gbc",$1c000,$20000 - $1c000
+
+
+SECTION "bank08",ROMX,BANK[$08]
+
+INCBIN "baserom.gbc",$20000,$24000 - $20000
+
+
+SECTION "Pics 1", ROMX, BANK[PICS_1]
+
+RhydonPicFront:: INCBIN "pic/ymon/rhydon.pic"
+RhydonPicBack:: INCBIN "pic/monback/rhydonb.pic"
+KangaskhanPicFront:: INCBIN "pic/ymon/kangaskhan.pic"
+KangaskhanPicBack:: INCBIN "pic/monback/kangaskhanb.pic"
+NidoranMPicFront:: INCBIN "pic/ymon/nidoranm.pic"
+NidoranMPicBack:: INCBIN "pic/monback/nidoranmb.pic"
+ClefairyPicFront:: INCBIN "pic/ymon/clefairy.pic"
+ClefairyPicBack:: INCBIN "pic/monback/clefairyb.pic"
+SpearowPicFront:: INCBIN "pic/ymon/spearow.pic"
+SpearowPicBack:: INCBIN "pic/monback/spearowb.pic"
+VoltorbPicFront:: INCBIN "pic/ymon/voltorb.pic"
+VoltorbPicBack:: INCBIN "pic/monback/voltorbb.pic"
+NidokingPicFront:: INCBIN "pic/ymon/nidoking.pic"
+NidokingPicBack:: INCBIN "pic/monback/nidokingb.pic"
+SlowbroPicFront:: INCBIN "pic/ymon/slowbro.pic"
+SlowbroPicBack:: INCBIN "pic/monback/slowbrob.pic"
+IvysaurPicFront:: INCBIN "pic/ymon/ivysaur.pic"
+IvysaurPicBack:: INCBIN "pic/monback/ivysaurb.pic"
+ExeggutorPicFront:: INCBIN "pic/ymon/exeggutor.pic"
+ExeggutorPicBack:: INCBIN "pic/monback/exeggutorb.pic"
+LickitungPicFront:: INCBIN "pic/ymon/lickitung.pic"
+LickitungPicBack:: INCBIN "pic/monback/lickitungb.pic"
+ExeggcutePicFront:: INCBIN "pic/ymon/exeggcute.pic"
+ExeggcutePicBack:: INCBIN "pic/monback/exeggcuteb.pic"
+GrimerPicFront:: INCBIN "pic/ymon/grimer.pic"
+GrimerPicBack:: INCBIN "pic/monback/grimerb.pic"
+GengarPicFront:: INCBIN "pic/ymon/gengar.pic"
+GengarPicBack:: INCBIN "pic/monback/gengarb.pic"
+NidoranFPicFront:: INCBIN "pic/ymon/nidoranf.pic"
+NidoranFPicBack:: INCBIN "pic/monback/nidoranfb.pic"
+NidoqueenPicFront:: INCBIN "pic/ymon/nidoqueen.pic"
+NidoqueenPicBack:: INCBIN "pic/monback/nidoqueenb.pic"
+CubonePicFront:: INCBIN "pic/ymon/cubone.pic"
+CubonePicBack:: INCBIN "pic/monback/cuboneb.pic"
+RhyhornPicFront:: INCBIN "pic/ymon/rhyhorn.pic"
+RhyhornPicBack:: INCBIN "pic/monback/rhyhornb.pic"
+LaprasPicFront:: INCBIN "pic/ymon/lapras.pic"
+LaprasPicBack:: INCBIN "pic/monback/laprasb.pic"
+ArcaninePicFront:: INCBIN "pic/ymon/arcanine.pic"
+ArcaninePicBack:: INCBIN "pic/monback/arcanineb.pic"
+MewPicFront:: INCBIN "pic/ymon/mew.pic"
+MewPicBack:: INCBIN "pic/monback/mewb.pic"
+GyaradosPicFront:: INCBIN "pic/ymon/gyarados.pic"
+GyaradosPicBack:: INCBIN "pic/monback/gyaradosb.pic"
+ShellderPicFront:: INCBIN "pic/ymon/shellder.pic"
+ShellderPicBack:: INCBIN "pic/monback/shellderb.pic"
+TentacoolPicFront:: INCBIN "pic/ymon/tentacool.pic"
+TentacoolPicBack:: INCBIN "pic/monback/tentacoolb.pic"
+GastlyPicFront:: INCBIN "pic/ymon/gastly.pic"
+GastlyPicBack:: INCBIN "pic/monback/gastlyb.pic"
+ScytherPicFront:: INCBIN "pic/ymon/scyther.pic"
+ScytherPicBack:: INCBIN "pic/monback/scytherb.pic"
+StaryuPicFront:: INCBIN "pic/ymon/staryu.pic"
+StaryuPicBack:: INCBIN "pic/monback/staryub.pic"
+BlastoisePicFront:: INCBIN "pic/ymon/blastoise.pic"
+BlastoisePicBack:: INCBIN "pic/monback/blastoiseb.pic"
+PinsirPicFront:: INCBIN "pic/ymon/pinsir.pic"
+PinsirPicBack:: INCBIN "pic/monback/pinsirb.pic"
+TangelaPicFront:: INCBIN "pic/ymon/tangela.pic"
+TangelaPicBack:: INCBIN "pic/monback/tangelab.pic"
+
+INCBIN "baserom.gbc",$27d20,$28000 - $27d20
+
+
+SECTION "Pics 2", ROMX, BANK[PICS_2]
+
+GrowlithePicFront:: INCBIN "pic/ymon/growlithe.pic"
+GrowlithePicBack:: INCBIN "pic/monback/growlitheb.pic"
+OnixPicFront:: INCBIN "pic/ymon/onix.pic"
+OnixPicBack:: INCBIN "pic/monback/onixb.pic"
+FearowPicFront:: INCBIN "pic/ymon/fearow.pic"
+FearowPicBack:: INCBIN "pic/monback/fearowb.pic"
+PidgeyPicFront:: INCBIN "pic/ymon/pidgey.pic"
+PidgeyPicBack:: INCBIN "pic/monback/pidgeyb.pic"
+SlowpokePicFront:: INCBIN "pic/ymon/slowpoke.pic"
+SlowpokePicBack:: INCBIN "pic/monback/slowpokeb.pic"
+KadabraPicFront:: INCBIN "pic/ymon/kadabra.pic"
+KadabraPicBack:: INCBIN "pic/monback/kadabrab.pic"
+GravelerPicFront:: INCBIN "pic/ymon/graveler.pic"
+GravelerPicBack:: INCBIN "pic/monback/gravelerb.pic"
+ChanseyPicFront:: INCBIN "pic/ymon/chansey.pic"
+ChanseyPicBack:: INCBIN "pic/monback/chanseyb.pic"
+MachokePicFront:: INCBIN "pic/ymon/machoke.pic"
+MachokePicBack:: INCBIN "pic/monback/machokeb.pic"
+MrMimePicFront:: INCBIN "pic/ymon/mr.mime.pic"
+MrMimePicBack:: INCBIN "pic/monback/mr.mimeb.pic"
+HitmonleePicFront:: INCBIN "pic/ymon/hitmonlee.pic"
+HitmonleePicBack:: INCBIN "pic/monback/hitmonleeb.pic"
+HitmonchanPicFront:: INCBIN "pic/ymon/hitmonchan.pic"
+HitmonchanPicBack:: INCBIN "pic/monback/hitmonchanb.pic"
+ArbokPicFront:: INCBIN "pic/ymon/arbok.pic"
+ArbokPicBack:: INCBIN "pic/monback/arbokb.pic"
+ParasectPicFront:: INCBIN "pic/ymon/parasect.pic"
+ParasectPicBack:: INCBIN "pic/monback/parasectb.pic"
+PsyduckPicFront:: INCBIN "pic/ymon/psyduck.pic"
+PsyduckPicBack:: INCBIN "pic/monback/psyduckb.pic"
+DrowzeePicFront:: INCBIN "pic/ymon/drowzee.pic"
+DrowzeePicBack:: INCBIN "pic/monback/drowzeeb.pic"
+GolemPicFront:: INCBIN "pic/ymon/golem.pic"
+GolemPicBack:: INCBIN "pic/monback/golemb.pic"
+MagmarPicFront:: INCBIN "pic/ymon/magmar.pic"
+MagmarPicBack:: INCBIN "pic/monback/magmarb.pic"
+ElectabuzzPicFront:: INCBIN "pic/ymon/electabuzz.pic"
+ElectabuzzPicBack:: INCBIN "pic/monback/electabuzzb.pic"
+MagnetonPicFront:: INCBIN "pic/ymon/magneton.pic"
+MagnetonPicBack:: INCBIN "pic/monback/magnetonb.pic"
+KoffingPicFront:: INCBIN "pic/ymon/koffing.pic"
+KoffingPicBack:: INCBIN "pic/monback/koffingb.pic"
+MankeyPicFront:: INCBIN "pic/ymon/mankey.pic"
+MankeyPicBack:: INCBIN "pic/monback/mankeyb.pic"
+SeelPicFront:: INCBIN "pic/ymon/seel.pic"
+SeelPicBack:: INCBIN "pic/monback/seelb.pic"
+DiglettPicFront:: INCBIN "pic/ymon/diglett.pic"
+DiglettPicBack:: INCBIN "pic/monback/diglettb.pic"
+TaurosPicFront:: INCBIN "pic/ymon/tauros.pic"
+TaurosPicBack:: INCBIN "pic/monback/taurosb.pic"
+FarfetchdPicFront:: INCBIN "pic/ymon/farfetchd.pic"
+FarfetchdPicBack:: INCBIN "pic/monback/farfetchdb.pic"
+VenonatPicFront:: INCBIN "pic/ymon/venonat.pic"
+VenonatPicBack:: INCBIN "pic/monback/venonatb.pic"
+DragonitePicFront:: INCBIN "pic/ymon/dragonite.pic"
+DragonitePicBack:: INCBIN "pic/monback/dragoniteb.pic"
+DoduoPicFront:: INCBIN "pic/ymon/doduo.pic"
+DoduoPicBack:: INCBIN "pic/monback/doduob.pic"
+PoliwagPicFront:: INCBIN "pic/ymon/poliwag.pic"
+PoliwagPicBack:: INCBIN "pic/monback/poliwagb.pic"
+JynxPicFront:: INCBIN "pic/ymon/jynx.pic"
+JynxPicBack:: INCBIN "pic/monback/jynxb.pic"
+MoltresPicFront:: INCBIN "pic/ymon/moltres.pic"
+MoltresPicBack:: INCBIN "pic/monback/moltresb.pic"
+
+INCBIN "baserom.gbc",$2bd4c,$2c000 - $2bd4c
+
+
+SECTION "Pics 3", ROMX, BANK[PICS_3]
+
+ArticunoPicFront:: INCBIN "pic/ymon/articuno.pic"
+ArticunoPicBack:: INCBIN "pic/monback/articunob.pic"
+ZapdosPicFront:: INCBIN "pic/ymon/zapdos.pic"
+ZapdosPicBack:: INCBIN "pic/monback/zapdosb.pic"
+DittoPicFront:: INCBIN "pic/ymon/ditto.pic"
+DittoPicBack:: INCBIN "pic/monback/dittob.pic"
+MeowthPicFront:: INCBIN "pic/ymon/meowth.pic"
+MeowthPicBack:: INCBIN "pic/monback/meowthb.pic"
+KrabbyPicFront:: INCBIN "pic/ymon/krabby.pic"
+KrabbyPicBack:: INCBIN "pic/monback/krabbyb.pic"
+VulpixPicFront:: INCBIN "pic/ymon/vulpix.pic"
+VulpixPicBack:: INCBIN "pic/monback/vulpixb.pic"
+NinetalesPicFront:: INCBIN "pic/ymon/ninetales.pic"
+NinetalesPicBack:: INCBIN "pic/monback/ninetalesb.pic"
+PikachuPicFront:: INCBIN "pic/ymon/pikachu.pic"
+PikachuPicBack:: INCBIN "pic/monback/pikachub.pic"
+RaichuPicFront:: INCBIN "pic/ymon/raichu.pic"
+RaichuPicBack:: INCBIN "pic/monback/raichub.pic"
+DratiniPicFront:: INCBIN "pic/ymon/dratini.pic"
+DratiniPicBack:: INCBIN "pic/monback/dratinib.pic"
+DragonairPicFront:: INCBIN "pic/ymon/dragonair.pic"
+DragonairPicBack:: INCBIN "pic/monback/dragonairb.pic"
+KabutoPicFront:: INCBIN "pic/ymon/kabuto.pic"
+KabutoPicBack:: INCBIN "pic/monback/kabutob.pic"
+KabutopsPicFront:: INCBIN "pic/ymon/kabutops.pic"
+KabutopsPicBack:: INCBIN "pic/monback/kabutopsb.pic"
+HorseaPicFront:: INCBIN "pic/ymon/horsea.pic"
+HorseaPicBack:: INCBIN "pic/monback/horseab.pic"
+SeadraPicFront:: INCBIN "pic/ymon/seadra.pic"
+SeadraPicBack:: INCBIN "pic/monback/seadrab.pic"
+SandshrewPicFront:: INCBIN "pic/ymon/sandshrew.pic"
+SandshrewPicBack:: INCBIN "pic/monback/sandshrewb.pic"
+SandslashPicFront:: INCBIN "pic/ymon/sandslash.pic"
+SandslashPicBack:: INCBIN "pic/monback/sandslashb.pic"
+OmanytePicFront:: INCBIN "pic/ymon/omanyte.pic"
+OmanytePicBack:: INCBIN "pic/monback/omanyteb.pic"
+OmastarPicFront:: INCBIN "pic/ymon/omastar.pic"
+OmastarPicBack:: INCBIN "pic/monback/omastarb.pic"
+JigglypuffPicFront:: INCBIN "pic/ymon/jigglypuff.pic"
+JigglypuffPicBack:: INCBIN "pic/monback/jigglypuffb.pic"
+WigglytuffPicFront:: INCBIN "pic/ymon/wigglytuff.pic"
+WigglytuffPicBack:: INCBIN "pic/monback/wigglytuffb.pic"
+EeveePicFront:: INCBIN "pic/ymon/eevee.pic"
+EeveePicBack:: INCBIN "pic/monback/eeveeb.pic"
+FlareonPicFront:: INCBIN "pic/ymon/flareon.pic"
+FlareonPicBack:: INCBIN "pic/monback/flareonb.pic"
+JolteonPicFront:: INCBIN "pic/ymon/jolteon.pic"
+JolteonPicBack:: INCBIN "pic/monback/jolteonb.pic"
+VaporeonPicFront:: INCBIN "pic/ymon/vaporeon.pic"
+VaporeonPicBack:: INCBIN "pic/monback/vaporeonb.pic"
+MachopPicFront:: INCBIN "pic/ymon/machop.pic"
+MachopPicBack:: INCBIN "pic/monback/machopb.pic"
+ZubatPicFront:: INCBIN "pic/ymon/zubat.pic"
+ZubatPicBack:: INCBIN "pic/monback/zubatb.pic"
+EkansPicFront:: INCBIN "pic/ymon/ekans.pic"
+EkansPicBack:: INCBIN "pic/monback/ekansb.pic"
+ParasPicFront:: INCBIN "pic/ymon/paras.pic"
+ParasPicBack:: INCBIN "pic/monback/parasb.pic"
+PoliwhirlPicFront:: INCBIN "pic/ymon/poliwhirl.pic"
+PoliwhirlPicBack:: INCBIN "pic/monback/poliwhirlb.pic"
+PoliwrathPicFront:: INCBIN "pic/ymon/poliwrath.pic"
+PoliwrathPicBack:: INCBIN "pic/monback/poliwrathb.pic"
+WeedlePicFront:: INCBIN "pic/ymon/weedle.pic"
+WeedlePicBack:: INCBIN "pic/monback/weedleb.pic"
+KakunaPicFront:: INCBIN "pic/ymon/kakuna.pic"
+KakunaPicBack:: INCBIN "pic/monback/kakunab.pic"
+BeedrillPicFront:: INCBIN "pic/ymon/beedrill.pic"
+BeedrillPicBack:: INCBIN "pic/monback/beedrillb.pic"
+
+FossilKabutopsPic:: INCBIN "pic/bmon/fossilkabutops.pic"
+
+INCBIN "baserom.gbc",$2fd25,$30000 - $2fd25
+
+
+SECTION "Pics 4", ROMX, BANK[PICS_4]
+
+DodrioPicFront:: INCBIN "pic/ymon/dodrio.pic"
+DodrioPicBack:: INCBIN "pic/monback/dodriob.pic"
+PrimeapePicFront:: INCBIN "pic/ymon/primeape.pic"
+PrimeapePicBack:: INCBIN "pic/monback/primeapeb.pic"
+DugtrioPicFront:: INCBIN "pic/ymon/dugtrio.pic"
+DugtrioPicBack:: INCBIN "pic/monback/dugtriob.pic"
+VenomothPicFront:: INCBIN "pic/ymon/venomoth.pic"
+VenomothPicBack:: INCBIN "pic/monback/venomothb.pic"
+DewgongPicFront:: INCBIN "pic/ymon/dewgong.pic"
+DewgongPicBack:: INCBIN "pic/monback/dewgongb.pic"
+CaterpiePicFront:: INCBIN "pic/ymon/caterpie.pic"
+CaterpiePicBack:: INCBIN "pic/monback/caterpieb.pic"
+MetapodPicFront:: INCBIN "pic/ymon/metapod.pic"
+MetapodPicBack:: INCBIN "pic/monback/metapodb.pic"
+ButterfreePicFront:: INCBIN "pic/ymon/butterfree.pic"
+ButterfreePicBack:: INCBIN "pic/monback/butterfreeb.pic"
+MachampPicFront:: INCBIN "pic/ymon/machamp.pic"
+MachampPicBack:: INCBIN "pic/monback/machampb.pic"
+GolduckPicFront:: INCBIN "pic/ymon/golduck.pic"
+GolduckPicBack:: INCBIN "pic/monback/golduckb.pic"
+HypnoPicFront:: INCBIN "pic/ymon/hypno.pic"
+HypnoPicBack:: INCBIN "pic/monback/hypnob.pic"
+GolbatPicFront:: INCBIN "pic/ymon/golbat.pic"
+GolbatPicBack:: INCBIN "pic/monback/golbatb.pic"
+MewtwoPicFront:: INCBIN "pic/ymon/mewtwo.pic"
+MewtwoPicBack:: INCBIN "pic/monback/mewtwob.pic"
+SnorlaxPicFront:: INCBIN "pic/ymon/snorlax.pic"
+SnorlaxPicBack:: INCBIN "pic/monback/snorlaxb.pic"
+MagikarpPicFront:: INCBIN "pic/ymon/magikarp.pic"
+MagikarpPicBack:: INCBIN "pic/monback/magikarpb.pic"
+MukPicFront:: INCBIN "pic/ymon/muk.pic"
+MukPicBack:: INCBIN "pic/monback/mukb.pic"
+KinglerPicFront:: INCBIN "pic/ymon/kingler.pic"
+KinglerPicBack:: INCBIN "pic/monback/kinglerb.pic"
+CloysterPicFront:: INCBIN "pic/ymon/cloyster.pic"
+CloysterPicBack:: INCBIN "pic/monback/cloysterb.pic"
+ElectrodePicFront:: INCBIN "pic/ymon/electrode.pic"
+ElectrodePicBack:: INCBIN "pic/monback/electrodeb.pic"
+ClefablePicFront:: INCBIN "pic/ymon/clefable.pic"
+ClefablePicBack:: INCBIN "pic/monback/clefableb.pic"
+WeezingPicFront:: INCBIN "pic/ymon/weezing.pic"
+WeezingPicBack:: INCBIN "pic/monback/weezingb.pic"
+PersianPicFront:: INCBIN "pic/ymon/persian.pic"
+PersianPicBack:: INCBIN "pic/monback/persianb.pic"
+MarowakPicFront:: INCBIN "pic/ymon/marowak.pic"
+MarowakPicBack:: INCBIN "pic/monback/marowakb.pic"
+HaunterPicFront:: INCBIN "pic/ymon/haunter.pic"
+HaunterPicBack:: INCBIN "pic/monback/haunterb.pic"
+AbraPicFront:: INCBIN "pic/ymon/abra.pic"
+AbraPicBack:: INCBIN "pic/monback/abrab.pic"
+AlakazamPicFront:: INCBIN "pic/ymon/alakazam.pic"
+AlakazamPicBack:: INCBIN "pic/monback/alakazamb.pic"
+PidgeottoPicFront:: INCBIN "pic/ymon/pidgeotto.pic"
+PidgeottoPicBack:: INCBIN "pic/monback/pidgeottob.pic"
+PidgeotPicFront:: INCBIN "pic/ymon/pidgeot.pic"
+PidgeotPicBack:: INCBIN "pic/monback/pidgeotb.pic"
+StarmiePicFront:: INCBIN "pic/ymon/starmie.pic"
+StarmiePicBack:: INCBIN "pic/monback/starmieb.pic"
+
+
+SECTION "Pics 5", ROMX, BANK[PICS_5]
+
+BulbasaurPicFront:: INCBIN "pic/ymon/bulbasaur.pic"
+BulbasaurPicBack:: INCBIN "pic/monback/bulbasaurb.pic"
+VenusaurPicFront:: INCBIN "pic/ymon/venusaur.pic"
+VenusaurPicBack:: INCBIN "pic/monback/venusaurb.pic"
+TentacruelPicFront:: INCBIN "pic/ymon/tentacruel.pic"
+TentacruelPicBack:: INCBIN "pic/monback/tentacruelb.pic"
+GoldeenPicFront:: INCBIN "pic/ymon/goldeen.pic"
+GoldeenPicBack:: INCBIN "pic/monback/goldeenb.pic"
+SeakingPicFront:: INCBIN "pic/ymon/seaking.pic"
+SeakingPicBack:: INCBIN "pic/monback/seakingb.pic"
+PonytaPicFront:: INCBIN "pic/ymon/ponyta.pic"
+RapidashPicFront:: INCBIN "pic/ymon/rapidash.pic"
+PonytaPicBack:: INCBIN "pic/monback/ponytab.pic"
+RapidashPicBack:: INCBIN "pic/monback/rapidashb.pic"
+RattataPicFront:: INCBIN "pic/ymon/rattata.pic"
+RattataPicBack:: INCBIN "pic/monback/rattatab.pic"
+RaticatePicFront:: INCBIN "pic/ymon/raticate.pic"
+RaticatePicBack:: INCBIN "pic/monback/raticateb.pic"
+NidorinoPicFront:: INCBIN "pic/ymon/nidorino.pic"
+NidorinoPicBack:: INCBIN "pic/monback/nidorinob.pic"
+NidorinaPicFront:: INCBIN "pic/ymon/nidorina.pic"
+NidorinaPicBack:: INCBIN "pic/monback/nidorinab.pic"
+GeodudePicFront:: INCBIN "pic/ymon/geodude.pic"
+GeodudePicBack:: INCBIN "pic/monback/geodudeb.pic"
+PorygonPicFront:: INCBIN "pic/ymon/porygon.pic"
+PorygonPicBack:: INCBIN "pic/monback/porygonb.pic"
+AerodactylPicFront:: INCBIN "pic/ymon/aerodactyl.pic"
+AerodactylPicBack:: INCBIN "pic/monback/aerodactylb.pic"
+MagnemitePicFront:: INCBIN "pic/ymon/magnemite.pic"
+MagnemitePicBack:: INCBIN "pic/monback/magnemiteb.pic"
+CharmanderPicFront:: INCBIN "pic/ymon/charmander.pic"
+CharmanderPicBack:: INCBIN "pic/monback/charmanderb.pic"
+SquirtlePicFront:: INCBIN "pic/ymon/squirtle.pic"
+SquirtlePicBack:: INCBIN "pic/monback/squirtleb.pic"
+CharmeleonPicFront:: INCBIN "pic/ymon/charmeleon.pic"
+CharmeleonPicBack:: INCBIN "pic/monback/charmeleonb.pic"
+WartortlePicFront:: INCBIN "pic/ymon/wartortle.pic"
+WartortlePicBack:: INCBIN "pic/monback/wartortleb.pic"
+CharizardPicFront:: INCBIN "pic/ymon/charizard.pic"
+CharizardPicBack:: INCBIN "pic/monback/charizardb.pic"
+FossilAerodactylPic:: INCBIN "pic/bmon/fossilaerodactyl.pic"
+GhostPic:: INCBIN "pic/other/ghost.pic"
+OddishPicFront:: INCBIN "pic/ymon/oddish.pic"
+OddishPicBack:: INCBIN "pic/monback/oddishb.pic"
+GloomPicFront:: INCBIN "pic/ymon/gloom.pic"
+GloomPicBack:: INCBIN "pic/monback/gloomb.pic"
+VileplumePicFront:: INCBIN "pic/ymon/vileplume.pic"
+VileplumePicBack:: INCBIN "pic/monback/vileplumeb.pic"
+BellsproutPicFront:: INCBIN "pic/ymon/bellsprout.pic"
+BellsproutPicBack:: INCBIN "pic/monback/bellsproutb.pic"
+WeepinbellPicFront:: INCBIN "pic/ymon/weepinbell.pic"
+WeepinbellPicBack:: INCBIN "pic/monback/weepinbellb.pic"
+VictreebelPicFront:: INCBIN "pic/ymon/victreebel.pic"
+VictreebelPicBack:: INCBIN "pic/monback/victreebelb.pic"
+
+INCBIN "baserom.gbc",$3749e,$38000 - $3749e
+
+
+SECTION "bank0E",ROMX,BANK[$0E]
+
+INCBIN "baserom.gbc",$38000,$3aa68 - $38000
+
+TradingAnimationGraphics:
+ INCBIN "gfx/game_boy.norepeat.2bpp"
+ INCBIN "gfx/link_cable.2bpp"
+
+TradingAnimationGraphics2:
+; Pokeball traveling through the link cable.
+ INCBIN "gfx/trade2.2bpp"
+
+INCBIN "baserom.gbc",$3adb8,$3c000 - $3adb8
+
+
+SECTION "bank0F",ROMX,BANK[$0F]
+
+INCBIN "baserom.gbc",$3c000,$40000 - $3c000
+
+
+SECTION "bank10",ROMX,BANK[$10]
+
+INCBIN "baserom.gbc",$40000,$44000 - $40000
+
+
+SECTION "bank11",ROMX,BANK[$11]
+
+INCBIN "baserom.gbc",$44000,$48000 - $44000
+
+
+SECTION "bank12",ROMX,BANK[$12]
+
+INCBIN "baserom.gbc",$48000,$4c000 - $48000
+
+
+SECTION "bank13",ROMX,BANK[$13]
+
+TrainerPics::
+YoungsterPic:: INCBIN "pic/trainer/youngster.pic"
+BugCatcherPic:: INCBIN "pic/trainer/bugcatcher.pic"
+LassPic:: INCBIN "pic/trainer/lass.pic"
+SailorPic:: INCBIN "pic/trainer/sailor.pic"
+JrTrainerMPic:: INCBIN "pic/trainer/jr.trainerm.pic"
+JrTrainerFPic:: INCBIN "pic/trainer/jr.trainerf.pic"
+PokemaniacPic:: INCBIN "pic/trainer/pokemaniac.pic"
+SuperNerdPic:: INCBIN "pic/trainer/supernerd.pic"
+HikerPic:: INCBIN "pic/trainer/hiker.pic"
+BikerPic:: INCBIN "pic/trainer/biker.pic"
+BurglarPic:: INCBIN "pic/trainer/burglar.pic"
+EngineerPic:: INCBIN "pic/trainer/engineer.pic"
+FisherPic:: INCBIN "pic/trainer/fisher.pic"
+SwimmerPic:: INCBIN "pic/trainer/swimmer.pic"
+CueBallPic:: INCBIN "pic/trainer/cueball.pic"
+GamblerPic:: INCBIN "pic/trainer/gambler.pic"
+BeautyPic:: INCBIN "pic/trainer/beauty.pic"
+PsychicPic:: INCBIN "pic/trainer/psychic.pic"
+RockerPic:: INCBIN "pic/trainer/rocker.pic"
+JugglerPic:: INCBIN "pic/trainer/juggler.pic"
+TamerPic:: INCBIN "pic/trainer/tamer.pic"
+BirdKeeperPic:: INCBIN "pic/trainer/birdkeeper.pic"
+BlackbeltPic:: INCBIN "pic/trainer/blackbelt.pic"
+Rival1Pic:: INCBIN "pic/ytrainer/rival1.pic"
+ProfOakPic:: INCBIN "pic/trainer/prof.oak.pic"
+ChiefPic::
+ScientistPic:: INCBIN "pic/trainer/scientist.pic"
+GiovanniPic:: INCBIN "pic/trainer/giovanni.pic"
+RocketPic:: INCBIN "pic/trainer/rocket.pic"
+CooltrainerMPic:: INCBIN "pic/trainer/cooltrainerm.pic"
+CooltrainerFPic:: INCBIN "pic/trainer/cooltrainerf.pic"
+BrunoPic:: INCBIN "pic/trainer/bruno.pic"
+BrockPic:: INCBIN "pic/ytrainer/brock.pic"
+MistyPic:: INCBIN "pic/ytrainer/misty.pic"
+LtSurgePic:: INCBIN "pic/trainer/lt.surge.pic"
+ErikaPic:: INCBIN "pic/ytrainer/erika.pic"
+KogaPic:: INCBIN "pic/trainer/koga.pic"
+BlainePic:: INCBIN "pic/trainer/blaine.pic"
+SabrinaPic:: INCBIN "pic/trainer/sabrina.pic"
+GentlemanPic:: INCBIN "pic/trainer/gentleman.pic"
+Rival2Pic:: INCBIN "pic/ytrainer/rival2.pic"
+Rival3Pic:: INCBIN "pic/ytrainer/rival3.pic"
+LoreleiPic:: INCBIN "pic/trainer/lorelei.pic"
+ChannelerPic:: INCBIN "pic/trainer/channeler.pic"
+AgathaPic:: INCBIN "pic/trainer/agatha.pic"
+LancePic:: INCBIN "pic/trainer/lance.pic"
+JessieJamesPic:: INCBIN "pic/ytrainer/jessiejames.pic"
+
+INCBIN "baserom.gbc",$4fe79,$50000 - $4fe79
+
+
+SECTION "bank14",ROMX,BANK[$14]
+
+INCBIN "baserom.gbc",$50000,$54000 - $50000
+
+
+SECTION "bank15",ROMX,BANK[$15]
+
+INCBIN "baserom.gbc",$54000,$58000 - $54000
+
+
+SECTION "bank16",ROMX,BANK[$16]
+
+INCBIN "baserom.gbc",$58000,$5c000 - $58000
+
+
+SECTION "bank17",ROMX,BANK[$17]
+
+INCBIN "baserom.gbc",$5c000,$60000 - $5c000
+
+
+SECTION "bank18",ROMX,BANK[$18]
+
+INCBIN "baserom.gbc",$60000,$64000 - $60000
+
+
+SECTION "bank19",ROMX,BANK[$19]
+
+INCBIN "baserom.gbc",$64000,$68000 - $64000
+
+
+SECTION "bank1A",ROMX,BANK[$1A]
+
+INCBIN "baserom.gbc",$68000,$6c000 - $68000
+
+
+SECTION "bank1B",ROMX,BANK[$1B]
+
+INCBIN "baserom.gbc",$6c000,$70000 - $6c000
+
+
+SECTION "bank1C",ROMX,BANK[$1C]
+
+INCLUDE "engine/gamefreak.asm"
+INCLUDE "engine/hall_of_fame.asm"
+INCLUDE "engine/overworld/healing_machine.asm"
+INCLUDE "engine/overworld/player_animations.asm"
+INCLUDE "engine/battle/ghost_marowak_anim.asm"
+INCLUDE "engine/battle/battle_transitions.asm"
+INCLUDE "engine/town_map.asm"
+
+INCBIN "baserom.gbc",$71784,$71eb3 - $71784
+
+INCLUDE "engine/palettes.asm"
+
+PokemonYellowGraphics: INCBIN "gfx/pokemon_yellow.t6.2bpp"
+
+INCBIN "baserom.gbc",$73959,$74000 - $73959
+
+
+SECTION "bank1D",ROMX,BANK[$1D]
+
+INCBIN "baserom.gbc",$74000,$78000 - $74000
+
+
+SECTION "bank1E",ROMX,BANK[$1E]
+
+INCBIN "baserom.gbc",$78000,$7a19a - $78000
+
+RedFishingTilesFront: INCBIN "gfx/red_fishing_tile_front.2bpp"
+RedFishingTilesBack: INCBIN "gfx/red_fishing_tile_back.2bpp"
+RedFishingTilesSide: INCBIN "gfx/red_fishing_tile_side.2bpp"
+RedFishingRodTiles: INCBIN "gfx/red_fishingrod_tiles.2bpp"
+
+INCBIN "baserom.gbc",$7a22a,$7c000 - $7a22a
+
+
+SECTION "bank1F",ROMX,BANK[$1F]
+
+INCBIN "baserom.gbc",$7c000,$80000 - $7c000
+
+
+SECTION "bank20",ROMX,BANK[$20]
+
+INCBIN "baserom.gbc",$80000,$80f14 - $80000
+
+SurfingPikachu1Graphics: INCBIN "gfx/surfing_pikachu_1.t4.2bpp"
+
+INCBIN "baserom.gbc",$82bd4,$84000 - $82bd4
+
+
+SECTION "bank21",ROMX,BANK[$21]
+
+INCBIN "baserom.gbc",$84000,$88000 - $84000
+
+
+SECTION "bank22",ROMX,BANK[$22]
+
+INCBIN "baserom.gbc",$88000,$8c000 - $88000
+
+
+SECTION "bank23",ROMX,BANK[$23]
+
+INCBIN "baserom.gbc",$8c000,$90000 - $8c000
+
+
+SECTION "bank24",ROMX,BANK[$24]
+
+INCBIN "baserom.gbc",$90000,$94000 - $90000
+
+
+SECTION "bank25",ROMX,BANK[$25]
+
+INCBIN "baserom.gbc",$94000,$98000 - $94000
+
+
+SECTION "bank2f",ROMX[$5000],BANK[$2F]
+
+INCBIN "baserom.gbc",$bd000,$c0000 - $bd000
+
+
+SECTION "bank30",ROMX,BANK[$30]
+
+INCBIN "baserom.gbc",$c0000,$c4000 - $c0000
+
+
+SECTION "bank31",ROMX,BANK[$31]
+
+INCBIN "baserom.gbc",$c4000,$c8000 - $c4000
+
+
+SECTION "bank32",ROMX,BANK[$32]
+
+INCBIN "baserom.gbc",$c8000,$cc000 - $c8000
+
+
+SECTION "bank33",ROMX,BANK[$33]
+
+INCBIN "baserom.gbc",$cc000,$d0000 - $cc000
+
+
+SECTION "bank34",ROMX,BANK[$34]
+
+INCBIN "baserom.gbc",$d0000,$d4000 - $d0000
+
+
+SECTION "bank35",ROMX,BANK[$35]
+
+INCBIN "baserom.gbc",$d4000,$d8000 - $d4000
+
+
+SECTION "bank36",ROMX,BANK[$36]
+
+INCBIN "baserom.gbc",$d8000,$dc000 - $d8000
+
+
+SECTION "bank37",ROMX,BANK[$37]
+
+INCBIN "baserom.gbc",$dc000,$e0000 - $dc000
+
+
+SECTION "bank38",ROMX,BANK[$38]
+
+INCBIN "baserom.gbc",$e0000,$e4000 - $e0000
+
+
+SECTION "bank39",ROMX,BANK[$39]
+
+INCBIN "baserom.gbc",$e4000,$e8000 - $e4000
+
+
+SECTION "bank3A",ROMX,BANK[$3A]
+
+INCBIN "baserom.gbc",$e8000,$e928a - $e8000
+
+SurfingPikachu2Graphics: INCBIN "gfx/surfing_pikachu_2.2bpp"
+
+INCBIN "baserom.gbc",$e988a,$e9bfa - $e988a
+
+SurfingPikachu3Graphics: INCBIN "gfx/surfing_pikachu_3.t1.2bpp"
+
+INCBIN "baserom.gbc",$ea3ea,$ec000 - $ea3ea
+
+SECTION "bank3C",ROMX,BANK[$3C]
+
+INCLUDE "engine/bank3c/main.asm"
+
+SECTION "bank3D",ROMX,BANK[$3D]
+
+INCLUDE "engine/bank3d/main.asm"
+
+SECTION "bank3E",ROMX,BANK[$3E]
+
+INCBIN "baserom.gbc",$f8000,$fa35a - $f8000
+
+YellowIntroGraphics: INCBIN "gfx/yellow_intro.2bpp"
+
+INCBIN "baserom.gbc",$fbb5a,$fc000 - $fbb5a
+
+
+SECTION "bank3F",ROMX,BANK[$3F]
+
+INCLUDE "engine/bank3f/main.asm"
+
+
+;IF DEF(_OPTION_BEACH_HOUSE)
+;SECTION "bank3C",ROMX[$4314],BANK[$3C]
+;
+;BeachHouse_GFX:
+; INCBIN "gfx/tilesets/beachhouse.2bpp"
+;
+;BeachHouse_Block:
+; INCBIN "gfx/blocksets/beachhouse.bst"
+;ENDC
+