Summer Beach House (buggy!)

This adds the Summer Beach House from Pokemon Yellow to Route 19, in an effort to make Kanto a bit more interesting.

The code for teaching Pikachu is very buggy right now and someone should check it out. I usually throw code out if it isn't functional but this seems extremely close to working.
This commit is contained in:
Llinos Evans 2024-08-04 02:27:27 +01:00
parent 88390e8282
commit 0dd22ececa
20 changed files with 301 additions and 6 deletions

View file

@ -373,6 +373,7 @@ ENDM
map_const FUCHSIA_POKECENTER_2F_BETA, 8, 4 ; 11 map_const FUCHSIA_POKECENTER_2F_BETA, 8, 4 ; 11
map_const SAFARI_ZONE_WARDENS_HOME, 5, 4 ; 12 map_const SAFARI_ZONE_WARDENS_HOME, 5, 4 ; 12
map_const ROUTE_15_FUCHSIA_GATE, 5, 4 ; 13 map_const ROUTE_15_FUCHSIA_GATE, 5, 4 ; 13
map_const SUMMER_BEACH_HOUSE, 7, 4 ; 13
endgroup endgroup
newgroup LAVENDER ; 18 newgroup LAVENDER ; 18

View file

@ -144,6 +144,7 @@
const SPRITE_CHANNELER const SPRITE_CHANNELER
const SPRITE_BALDING_GUY const SPRITE_BALDING_GUY
const SPRITE_GAMEBOY_GIRL const SPRITE_GAMEBOY_GIRL
const SPRITE_OVERWORLD_PIKACHU
DEF NUM_OVERWORLD_SPRITES EQU const_value - 1 DEF NUM_OVERWORLD_SPRITES EQU const_value - 1
; SpriteMons indexes (see data/sprites/sprite_mons.asm) ; SpriteMons indexes (see data/sprites/sprite_mons.asm)

View file

@ -192,3 +192,5 @@ SpecialsPointers::
add_special ShoveSafariBallsDownKrissThroat add_special ShoveSafariBallsDownKrissThroat
add_special GiveKrisSneakers add_special GiveKrisSneakers
add_special DebugGiveMonSpecialMove add_special DebugGiveMonSpecialMove
add_special CheckPikachu
add_special TeachPikachuSurf

View file

@ -854,6 +854,7 @@ ENDM
map_attributes PokemonPagoda4F, POKEMON_PAGODA_4F, $00, 0 map_attributes PokemonPagoda4F, POKEMON_PAGODA_4F, $00, 0
map_attributes PokemonPagoda5F, POKEMON_PAGODA_5F, $00, 0 map_attributes PokemonPagoda5F, POKEMON_PAGODA_5F, $00, 0
map_attributes JackysHouse, JACKYS_HOUSE, $00, 0 map_attributes JackysHouse, JACKYS_HOUSE, $00, 0
map_attributes SummerBeachHouse, SUMMER_BEACH_HOUSE, $00, 0
map_attributes BlueForest, BLUE_FOREST, $00, 0 ; this is on its own for now. add connections later. map_attributes BlueForest, BLUE_FOREST, $00, 0 ; this is on its own for now. add connections later.

View file

@ -1279,4 +1279,7 @@ TwoIsland_Blocks:
CapeBrink_Blocks: CapeBrink_Blocks:
INCBIN "maps/CapeBrink.ablk" INCBIN "maps/CapeBrink.ablk"
SummerBeachHouse_Blocks:
INCBIN "maps/SummerBeachHouse.ablk"

View file

@ -412,6 +412,7 @@ MapGroup_Fuchsia:
map FuchsiaPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE map FuchsiaPokecenter2FBeta, TILESET_POKECENTER, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
map SafariZoneWardensHome, TILESET_HOUSE, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE map SafariZoneWardensHome, TILESET_HOUSE, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE
map Route15FuchsiaGate, TILESET_GATE, GATE, LANDMARK_ROUTE_15, MUSIC_ROUTE_12, FALSE, PALETTE_DAY, FISHGROUP_SHORE map Route15FuchsiaGate, TILESET_GATE, GATE, LANDMARK_ROUTE_15, MUSIC_ROUTE_12, FALSE, PALETTE_DAY, FISHGROUP_SHORE
map SummerBeachHouse, TILESET_HOUSE, INDOOR, LANDMARK_FUCHSIA_CITY, MUSIC_CELADON_CITY, FALSE, PALETTE_DAY, FISHGROUP_NONE
assert_table_length NUM_FUCHSIA_MAPS assert_table_length NUM_FUCHSIA_MAPS
MapGroup_Lavender: MapGroup_Lavender:

View file

@ -602,6 +602,7 @@ INCLUDE "maps/LavenderCryptSet3.asm"
INCLUDE "maps/LavenderCryptDokuroarsRoom.asm" INCLUDE "maps/LavenderCryptDokuroarsRoom.asm"
INCLUDE "maps/Route50.asm" INCLUDE "maps/Route50.asm"
INCLUDE "maps/JackysHouse.asm" INCLUDE "maps/JackysHouse.asm"
INCLUDE "maps/SummerBeachHouse.asm"
SECTION "Map Scripts 31", ROMX ; spillover SECTION "Map Scripts 31", ROMX ; spillover
INCLUDE "maps/TanobyRuins.asm" INCLUDE "maps/TanobyRuins.asm"

View file

@ -149,4 +149,5 @@ OverworldSprites:
overworld_sprite ChannelerGFX, 12, WALKING_SPRITE, PAL_OW_BROWN overworld_sprite ChannelerGFX, 12, WALKING_SPRITE, PAL_OW_BROWN
overworld_sprite BaldingGuyGFX, 12, STANDING_SPRITE, PAL_OW_BROWN overworld_sprite BaldingGuyGFX, 12, STANDING_SPRITE, PAL_OW_BROWN
overworld_sprite GameboyGirlGFX, 12, STANDING_SPRITE, PAL_OW_RED overworld_sprite GameboyGirlGFX, 12, STANDING_SPRITE, PAL_OW_RED
overworld_sprite OverworldPikachuGFX, 12, STANDING_SPRITE, PAL_OW_BROWN
assert_table_length NUM_OVERWORLD_SPRITES assert_table_length NUM_OVERWORLD_SPRITES

Binary file not shown.

View file

@ -63,3 +63,14 @@
tilecoll FLOOR, FLOOR, WALL, FLOOR ; 3e tilecoll FLOOR, FLOOR, WALL, FLOOR ; 3e
tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3f tilecoll FLOOR, WALL, FLOOR, FLOOR ; 3f
tilecoll WALL, FLOOR, FLOOR, FLOOR ; 40 tilecoll WALL, FLOOR, FLOOR, FLOOR ; 40
tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 41
tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 42
tilecoll WALL, FLOOR, WALL, FLOOR ; 43
tilecoll WALL, WALL, FLOOR, FLOOR ; 44
tilecoll WALL, WALL, FLOOR, FLOOR ; 45
tilecoll WALL, WALL, FLOOR, FLOOR ; 46
tilecoll WALL, WALL, FLOOR, FLOOR ; 47
tilecoll WALL, WALL, FLOOR, WALL ; 48
tilecoll FLOOR, WALL, FLOOR, WALL ; 49
tilecoll WALL, FLOOR, WALL, FLOOR ; 4a
tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 4b

Binary file not shown.

View file

@ -15,6 +15,78 @@ Special::
INCLUDE "data/events/special_pointers.asm" INCLUDE "data/events/special_pointers.asm"
TeachPikachuSurf:
; Use Dratini code to find Pikachu
ld bc, wPartyCount
ld a, [bc]
ld hl, MON_SPECIES
call DebugGiveMonSpecialMove.GetNthPartyMon
ld a, [bc]
ld c, a
push hl
ld hl, PIKACHU
call GetPokemonIDFromIndex
pop hl
ld b, a
ld de, PARTYMON_STRUCT_LENGTH
call DebugGiveMonSpecialMove.CheckForNthPokemon
.GiveMove
; BUG: Doesn't seem to find Surf properly.
; The move DOES reach Pikachu's moveset!!!!!! However, what it learns just isn't correct.
; Similar issue to when I tried to add evo moves ~ PvK
ld a, SURF
call GetMoveIDFromIndex
ld [wPutativeTMHMMove], a
; Find Pikachu again
ld bc, wPartyCount
ld a, [bc]
ld hl, MON_SPECIES
call DebugGiveMonSpecialMove.GetNthPartyMon
ld [wCurPartyMon], a
; BUG: Doesn't load the tiles correctly because I'm stupid
; Is it just in the wrong place? lmao
ld hl, .MenuHeader
call LoadMenuHeader
; Learn the move
predef LearnMove
ret
.MenuHeader:
db MENU_BACKUP_TILES ; flags
menu_coords 0, 12, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
; Currently only works for Pikachu but could possibly be reworked for other things in the future. 90% sure there's a better way to do this.
; TODO: Check the DVs to see if it's strong enough. I'm feeling Shiny DV total or above.
CheckPikachu:
ld a, [wCurPartySpecies]
call GetPokemonIndexFromID
ld a, l
sub LOW(PIKACHU)
if HIGH(PIKACHU) == 0
or h
else
jr nz, .notMon
if HIGH(PIKACHU) == 1
dec h
else
ld a, h
cp HIGH(PIKACHU)
endc
endc
jr nz, .notMon
ld a, 1
jr .done
.notMon
xor a ; return 0 if not it
ld [wScriptVar], a
.done
ret
DebugGiveMonSpecialMove: DebugGiveMonSpecialMove:
; TODO: Make this good :3 ; TODO: Make this good :3
; I could implement Rangi's special givepoke but i am too stupid ; I could implement Rangi's special givepoke but i am too stupid

View file

@ -149,4 +149,5 @@ LoreleiGFX:: INCBIN "gfx/sprites/lorelei.2bpp"
GiovanniGFX:: INCBIN "gfx/sprites/giovanni.2bpp" GiovanniGFX:: INCBIN "gfx/sprites/giovanni.2bpp"
ChannelerGFX:: INCBIN "gfx/sprites/channeler.2bpp" ChannelerGFX:: INCBIN "gfx/sprites/channeler.2bpp"
BaldingGuyGFX:: INCBIN "gfx/sprites/balding_guy.2bpp" BaldingGuyGFX:: INCBIN "gfx/sprites/balding_guy.2bpp"
GameboyGirlGFX:: INCBIN "gfx/sprites/gameboy_girl.2bpp" GameboyGirlGFX:: INCBIN "gfx/sprites/gameboy_girl.2bpp"
OverworldPikachuGFX:: INCBIN "gfx/sprites/pikachu.2bpp"

BIN
gfx/sprites/pikachu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View file

@ -8,12 +8,12 @@ DebugRoom_MapScripts:
DebugPokemon1Script: DebugPokemon1Script:
opentext opentext
getmonname STRING_BUFFER_3, LUXWAN getmonname STRING_BUFFER_3, PIKACHU
writetext ReceivedDebugPokemonText writetext ReceivedDebugPokemonText
playsound SFX_CAUGHT_MON playsound SFX_CAUGHT_MON
waitsfx waitsfx
promptbutton promptbutton
givepoke LUXWAN, 24, POISON_STONE givepoke PIKACHU, 24, POISON_STONE
closetext closetext
end end
@ -397,7 +397,7 @@ DebugRoom_MapEvents:
warp_event 11, 15, LAKE_OF_RAGE, 3 warp_event 11, 15, LAKE_OF_RAGE, 3
warp_event 27, 5, PEWTER_CITY, 2 warp_event 27, 5, PEWTER_CITY, 2
warp_event 15, 2, GOLDENROD_CITY, 1 ; city warp warp_event 15, 2, GOLDENROD_CITY, 1 ; city warp
warp_event 4, 9, PALLET_TOWN, 1 ; left lab/league warp warp_event 4, 9, SUMMER_BEACH_HOUSE, 1 ; left lab/league warp
warp_event 5, 9, PALLET_TOWN, 1 ; right lab/league warp warp_event 5, 9, PALLET_TOWN, 1 ; right lab/league warp
warp_event 35, 17, OLD_CITY, 1 ; east warp warp_event 35, 17, OLD_CITY, 1 ; east warp
warp_event 5, 35, LAVENDER_TOWN, 1 ; southwest warp warp_event 5, 35, LAVENDER_TOWN, 1 ; southwest warp
@ -421,4 +421,4 @@ DebugRoom_MapEvents:
object_event 18, 13, SPRITE_SAFARI_ZONE_WORKER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, TrainerTestScript, -1 object_event 18, 13, SPRITE_SAFARI_ZONE_WORKER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, TrainerTestScript, -1
object_event 20, 13, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DebugDollShopScript, -1 object_event 20, 13, SPRITE_FISHER, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DebugDollShopScript, -1
object_event 25, 15, SPRITE_WILL, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, MemoryGameScript, -1 object_event 25, 15, SPRITE_WILL, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, MemoryGameScript, -1
object_event 27, 16, SPRITE_KAREN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DebugGligarScript, -1 object_event 8, 16, SPRITE_KAREN, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, DebugGligarScript, -1

View file

@ -1 +1 @@
(,) !Vw(,)(,)|~11$W%$W%111CCCCCCCCCCC辧1111棘剩CCCCCCCC又CCCCCCCC抹CCCCCCCC砲CCCCCCCC砲CCCCCCCC砲CCCCCCCC砲CCCCCCCC砲CCCCCCCC砲CCCCCCCC砲CCCCCCCC侭劔劔劔劔<EFBFBD> (,) !Vw(,)(,)|~11$W%$W%111CCCCCCCCC<1A>CC<43><43>1111<><31><EFBFBD><EFBFBD>CCCCCCCC<43><43>CCCCCCCC<43><43>CCCCCCCC<43>CCCCCCCCC<43>CCCCCCCCC<43>CCCCCCCCC<43>CCCCCCCCC<43>CCCCCCCCC<43>CCCCCCCCC<43>CCCCCCCCC<43><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View file

@ -232,17 +232,27 @@ CarefulSwimmingSignText:
para "FUCHSIA POLICE" para "FUCHSIA POLICE"
done done
BeachHouseSignScript:
jumptext BeachHouseSignText
BeachHouseSignText:
text "SUMMER BEACH HOUSE"
line "#MON welcome!"
done
Route19_MapEvents: Route19_MapEvents:
db 0, 0 ; filler db 0, 0 ; filler
def_warp_events def_warp_events
warp_event 7, 3, ROUTE_19_FUCHSIA_GATE, 3 warp_event 7, 3, ROUTE_19_FUCHSIA_GATE, 3
warp_event 5, 9, SUMMER_BEACH_HOUSE, 1
def_coord_events def_coord_events
def_bg_events def_bg_events
bg_event 11, 13, BGEVENT_READ, Route19Sign bg_event 11, 13, BGEVENT_READ, Route19Sign
bg_event 11, 1, BGEVENT_READ, CarefulSwimmingSign bg_event 11, 1, BGEVENT_READ, CarefulSwimmingSign
bg_event 7, 11, BGEVENT_READ, BeachHouseSignScript
def_object_events def_object_events
object_event 9, 23, SPRITE_SWIMMER_GIRL, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 0, TrainerSwimmerfDawn, -1 object_event 9, 23, SPRITE_SWIMMER_GIRL, SPRITEMOVEDATA_STANDING_LEFT, 0, 0, -1, -1, PAL_NPC_GREEN, OBJECTTYPE_TRAINER, 0, TrainerSwimmerfDawn, -1

View file

@ -0,0 +1 @@
GEGDFDHCBBAIJABBBAIJACKBAAAA

189
maps/SummerBeachHouse.asm Normal file
View file

@ -0,0 +1,189 @@
object_const_def
const SUMMERBEACHHOUSE_VICTOR
const SUMMERBEACHHOUSE_PUKA
SummerBeachHouse_MapScripts:
def_scene_scripts
def_callbacks
; WIP
; I want the Surfin' Dude to teach a high-DV Pikachu Surf.
; Everything here is as I want it, really, it's pretty neat.
; Check engine/events/specials.asm for the funny buggy code.
SummerBeachHouseSurfinDudeScript:
faceplayer
opentext
writetext SummerBeachHouseSurfinDudeText1
yesorno
iffalse .NotPikachu
loadmonindex 1, PIKACHU
special FindPartyMonThatSpecies ; currently just works with Pikachu
writetext SummerBeachHouseSurfinDudeText2
waitbutton
special CheckPikachu
ifequal 0, .NotPikachu
ifequal 1, .GetReward
sjump .GetReward
.GetReward:
writetext SummerBeachHouseSurfinDudeTextICanDoIt
turnobject SUMMERBEACHHOUSE_PUKA, LEFT
showemote EMOTE_SHOCK, SUMMERBEACHHOUSE_PUKA, 15
writetext SummerBeachHousePukaTeach
cry PIKACHU
waitbutton
applymovement SUMMERBEACHHOUSE_PUKA, PukaMovement1
special TeachPikachuSurf
writetext SummerBeachHouseSurfinDudeTextDone
applymovement SUMMERBEACHHOUSE_PUKA, PukaMovement2
waitbutton
closetext
; setevent EVENT_TAUGHT_PIKACHU_SURF
end
.NotPikachu:
writetext SummerBeachHouseSurfinDudeTextNoHave
waitbutton
closetext
end
.TaughtPikachu:
writetext SummerBeachHouseSurfinDudeText4
waitbutton
closetext
end
PukaMovement1:
step LEFT
step UP
step UP
step LEFT
step LEFT
step LEFT
turn_head DOWN
step_end
PukaMovement2:
step RIGHT
step RIGHT
step RIGHT
step DOWN
step DOWN
step RIGHT
step_end
SummerBeachHouseSurfinDudeText1: ; aka Victor
text "Yo! For many years"
line "I have wanted to"
cont "teach a worthy"
cont "PIKACHU to SURF!"
para "Do you have one?"
done
SummerBeachHouseSurfinDudeText2:
text "Ah! A PIKACHU!"
line "Let's see…"
done
SummerBeachHouseSurfinDudeTextNoHave:
text "You don't have"
line "one? Aww…"
done
SummerBeachHouseSurfinDudeTextICanDoIt:
text "Yeah! This PIKACHU"
line "yearns for the"
cont "waves!"
para "PUKA, come here!"
done
SummerBeachHouseSurfinDudeTextDone:
text "There! You can"
line "SURF wherever"
cont "you want with"
cont "this PIKACHU now!"
para "Come again!"
done
SummerBeachHousePoster1Script:
jumptext SummerBeachHousePoster1Text
SummerBeachHousePoster1Text:
text "SURFIN' DUDE's"
line "scribbles…"
para "When I shoot the"
line "tube, the tunes"
cont "hit the groove!"
done
SummerBeachHousePoster2Script:
jumptext SummerBeachHousePoster2Text
SummerBeachHousePoster2Text:
text "30 years of waves!"
line "SURFIN' DUDE"
done
SummerBeachHousePoster3Script:
jumptext SummerBeachHousePoster1Text
SummerBeachHousePoster3Text:
text "It's an old pos-"
line "ter of the SURF-"
cont "IN' DUDE with"
cont "PUKA!"
done
SummerBeachHousePrinterScript:
jumptext SummerBeachHousePrinterText1
SummerBeachHousePrinterText1:
text "It's some sort of"
line "a machine…"
done
SummerBeachHouseSurfinDudeText4:
text "Dogs and burgers"
line "on special today!"
done
SummerBeachHousePukaScript:
faceplayer
opentext
writetext SummerBeachHousePuka
cry PIKACHU
waitbutton
closetext
end
SummerBeachHousePuka:
text "PUKA: Pikaaaa…"
done
SummerBeachHousePukaTeach:
text "PUKA: Pikapika!?"
done
SummerBeachHouse_MapEvents:
db 0, 0 ; filler
def_warp_events
warp_event 3, 7, ROUTE_19, 2
warp_event 2, 7, ROUTE_19, 2
def_coord_events
def_bg_events
bg_event 3, 0, BGEVENT_READ, SummerBeachHousePoster1Script
bg_event 7, 0, BGEVENT_READ, SummerBeachHousePoster2Script
bg_event 13, 1, BGEVENT_READ, SummerBeachHousePrinterScript
bg_event 11, 0, BGEVENT_READ, SummerBeachHousePoster3Script
def_object_events
object_event 3, 3, SPRITE_FISHING_GURU, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, SummerBeachHouseSurfinDudeScript, -1
object_event 8, 5, SPRITE_OVERWORLD_PIKACHU, SPRITEMOVEDATA_STANDING_RIGHT, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, SummerBeachHousePukaScript, -1