diff options
-rw-r--r-- | Makefile | 19 | ||||
-rw-r--r-- | constants/event_macros.asm | 443 | ||||
-rwxr-xr-x | constants/type_constants.asm | 6 | ||||
-rwxr-xr-x | data/town_map_entries.asm | 4 | ||||
-rwxr-xr-x | data/town_map_order.asm | 2 | ||||
-rw-r--r-- | engine/bank3c/main.asm | 5 | ||||
-rw-r--r-- | engine/bank3d/link_menu.asm | 4 | ||||
-rw-r--r-- | engine/bank3d/main.asm | 8 | ||||
-rw-r--r-- | engine/bank3f/main.asm | 16 | ||||
-rw-r--r-- | engine/battle/link_battle_versus_text.asm | 2 | ||||
-rwxr-xr-x | engine/hall_of_fame.asm | 6 | ||||
-rwxr-xr-x | engine/multiply_divide.asm | 4 | ||||
-rwxr-xr-x | engine/palettes.asm | 11 | ||||
-rwxr-xr-x | engine/town_map.asm | 255 | ||||
-rw-r--r-- | home.asm | 46 | ||||
-rw-r--r-- | home/overworld.asm | 2 | ||||
-rw-r--r-- | macros.asm | 46 | ||||
-rwxr-xr-x | yellow/audio.asm | 4 | ||||
-rwxr-xr-x | yellow/main.asm | 802 |
19 files changed, 1494 insertions, 191 deletions
@@ -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 @@ -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) @@ -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 + |