diff --git a/README.md b/README.md index c31f6cc..2cc0884 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ The Fairy-type does exist. - RBY classes not in GSC, such as the Rocker, Channeler, and even the beta Firefighter - Prototype GSC classes such as the Male Teacher, Sportsman, and Soldier - The Painter from FRLG! +- Numerous new maps, featuring new locations, the iconic Sevii Islands, and the Nihon region! ## QoL Changes - A Trader NPC is available in a new Lake of Rage town area, allowing you to access trade evolutions natively. @@ -69,9 +70,10 @@ In general, there have been many wild encounter tweaks. View this document for d db 64, BRICK_PIECE ## Item Changes -- Many evolution stones have been added to accomodate the Pokemon featured here, including the Heart and Poison Stones from the SpaceWorld demo! +- Many evolution stones have been added to accomodate the Pokemon featured here, including the Heart and Poison Stones from the SpaceWorld demo, and the Peat Block! - The Fairy Feather from Scarlet and Violet has been added to accomodate the Fairy type. - The Antique Pot has been added to accomodate a Shuckle evolution! +- New Club and Wing Fossils - you'll have to see what these do! # Credits - Plague von Karma (Director, Kanto Expansion Pak Founder, Programming, Maps) @@ -84,6 +86,7 @@ In general, there have been many wild encounter tweaks. View this document for d - Rezzo (GSC-specific advice) - Old Dance Jacket (GSC-specific advice) - Minamitoku (SW97 demo translation commentary [here](https://www.youtube.com/watch?v=Pe1vsKRl7_M&ab_channel=Minamitoku)) +- ausma (KEP Developer, legacy) # Sprite Credits - Zeta_Null: Topaz sprites, numerous tileset bits, Omegadge, @@ -96,6 +99,8 @@ In general, there have been many wild encounter tweaks. View this document for d - Seasick: Kris running sprite - Ferropexola/aforward9600: Time of day-based tileset palette code + +Original readme proceeding... # 16-bit index expansion for Crystal This repository contains a modified Pokémon Crystal game, updated to handle 16-bit indexes. The main goal of this diff --git a/constants/map_constants.asm b/constants/map_constants.asm index da70807..f1571e5 100644 --- a/constants/map_constants.asm +++ b/constants/map_constants.asm @@ -390,7 +390,7 @@ ENDM map_const LAV_RADIO_TOWER_1F, 10, 4 ; 12 map_const ROUTE_8_SAFFRON_GATE, 5, 4 ; 13 map_const ROUTE_12_SUPER_ROD_HOUSE, 4, 4 ; 14 - map_const LAVENDER_CRYPT, 10, 10 ; 15 + map_const LAVENDER_CRYPT, 9, 10 ; 15 endgroup newgroup SILVER ; 19 diff --git a/constants/tileset_constants.asm b/constants/tileset_constants.asm index fa4f662..c034e43 100644 --- a/constants/tileset_constants.asm +++ b/constants/tileset_constants.asm @@ -46,6 +46,7 @@ const TILESET_NIHON_OLD ; 2C const TILESET_NIHON_SOUTH ; 2D const TILESET_NIHON_WEST ; 2E + const TILESET_LAVENDER_CRYPT ; 2F DEF NUM_TILESETS EQU const_value - 1 ; wTileset struct size diff --git a/data/maps/maps.asm b/data/maps/maps.asm index 0f76801..557b3aa 100644 --- a/data/maps/maps.asm +++ b/data/maps/maps.asm @@ -428,7 +428,7 @@ MapGroup_Lavender: map LavRadioTower1F, TILESET_RADIO_TOWER, INDOOR, LANDMARK_LAV_RADIO_TOWER, MUSIC_LAVENDER_TOWN, FALSE, PALETTE_DAY, FISHGROUP_SHORE map Route8SaffronGate, TILESET_GATE, GATE, LANDMARK_ROUTE_8, MUSIC_ROUTE_3, FALSE, PALETTE_DAY, FISHGROUP_SHORE map Route12SuperRodHouse, TILESET_HOUSE, INDOOR, LANDMARK_ROUTE_12, MUSIC_VIRIDIAN_CITY, FALSE, PALETTE_DAY, FISHGROUP_SHORE - map LavenderCrypt, TILESET_CAVE, INDOOR, LANDMARK_LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, TRUE, PALETTE_DAY, FISHGROUP_NONE + map LavenderCrypt, TILESET_LAVENDER_CRYPT, CAVE, LANDMARK_LAVENDER_TOWN, MUSIC_LAVENDER_TOWN, TRUE, PALETTE_NITE, FISHGROUP_NONE assert_table_length NUM_LAVENDER_MAPS MapGroup_Silver: diff --git a/data/tilesets.asm b/data/tilesets.asm index 2b57a37..1cd055f 100644 --- a/data/tilesets.asm +++ b/data/tilesets.asm @@ -58,4 +58,5 @@ Tilesets:: tileset TilesetNihonOld tileset TilesetNihonSouth tileset TilesetNihonWest + tileset TilesetLavenderCrypt assert_table_length NUM_TILESETS + 1 diff --git a/data/tilesets/lavendercrypt_attributes.bin b/data/tilesets/lavendercrypt_attributes.bin new file mode 100644 index 0000000..abf7a40 Binary files /dev/null and b/data/tilesets/lavendercrypt_attributes.bin differ diff --git a/data/tilesets/lavendercrypt_collision.asm b/data/tilesets/lavendercrypt_collision.asm new file mode 100644 index 0000000..210e6a8 --- /dev/null +++ b/data/tilesets/lavendercrypt_collision.asm @@ -0,0 +1,113 @@ + tilecoll WALL, WALL, WALL, WALL ; 00 + tilecoll WALL, WALL, WALL, WALL ; 01 + tilecoll WALL, WALL, WALL, WALL ; 02 + tilecoll WALL, WALL, WALL, WALL ; 03 + tilecoll WALL, WALL, WALL, WALL ; 04 + tilecoll WALL, WALL, WALL, WALL ; 05 + tilecoll WALL, WALL, FLOOR, FLOOR ; 06 + tilecoll WALL, WALL, FLOOR, WALL ; 07 + tilecoll WALL, WALL, WALL, WALL ; 08 + tilecoll WALL, WALL, WALL, WALL ; 09 + tilecoll WALL, WALL, WALL, FLOOR ; 0a + tilecoll WALL, WALL, WALL, WALL ; 0b + tilecoll WALL, WALL, WALL, WALL ; 0c + tilecoll WALL, WALL, WALL, WALL ; 0d + tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0e + tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 0f + tilecoll WALL, WALL, WALL, WALL ; 10 + tilecoll WALL, WALL, WALL, LADDER ; 11 + tilecoll FLOOR, WALL, LADDER, WALL ; 12 + tilecoll FLOOR, FLOOR, FLOOR, WALL ; 13 + tilecoll WALL, WALL, WALL, WALL ; 14 + tilecoll WALL, FLOOR, WALL, LADDER ; 15 + tilecoll FLOOR, WALL, LADDER, WALL ; 16 + tilecoll FLOOR, FLOOR, WALL, FLOOR ; 17 + tilecoll WALL, WALL, WALL, FLOOR ; 18 + tilecoll WALL, WALL, FLOOR, FLOOR ; 19 + tilecoll FLOOR, FLOOR, WALL, FLOOR ; 1a + tilecoll WALL, FLOOR, LADDER, FLOOR ; 1b + tilecoll WALL, FLOOR, WALL, WALL ; 1c + tilecoll FLOOR, FLOOR, WALL, WALL ; 1d + tilecoll FLOOR, WALL, WALL, WALL ; 1e + tilecoll FLOOR, WALL, FLOOR, FLOOR ; 1f + tilecoll FLOOR, WALL, FLOOR, WALL ; 20 + tilecoll FLOOR, FLOOR, LADDER, FLOOR ; 21 + tilecoll WALL, WALL, FLOOR, FLOOR ; 22 + tilecoll WALL, WALL, FLOOR, WALL ; 23 + tilecoll WALL, WALL, FLOOR, FLOOR ; 24 + tilecoll FLOOR, WALL, FLOOR, WALL ; 25 + tilecoll FLOOR, FLOOR, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 26 + tilecoll WALL, FLOOR, WALL, WARP_CARPET_DOWN ; 27 + tilecoll FLOOR, WALL, WARP_CARPET_DOWN, WALL ; 28 + tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 29 + tilecoll WALL, WALL, WALL, WALL ; 2a + tilecoll FLOOR, WALL, WARP_CARPET_DOWN, WARP_CARPET_DOWN ; 2b + tilecoll WALL, WALL, WALL, WALL ; 2c + tilecoll FLOOR, FLOOR, WALL, WALL ; 2d + tilecoll WALL, WALL, WALL, WALL ; 2e + tilecoll WALL, WALL, WALL, WALL ; 2f + tilecoll WALL, LADDER, WALL, WALL ; 30 + tilecoll WALL, LADDER, WALL, WALL ; 31 + tilecoll LADDER, FLOOR, LADDER, FLOOR ; 32 + tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 33 + tilecoll WALL, WALL, FLOOR, FLOOR ; 34 + tilecoll WALL, WALL, WALL, WALL ; 35 + tilecoll FLOOR, FLOOR, FLOOR, FLOOR ; 36 + tilecoll FLOOR, FLOOR, WALL, WALL ; 37 + tilecoll FLOOR, FLOOR, WALL, WALL ; 38 + tilecoll WALL, FLOOR, WALL, FLOOR ; 39 + tilecoll WALL, WALL, WALL, FLOOR ; 3a + tilecoll WALL, WALL, FLOOR, FLOOR ; 3b + tilecoll WALL, WALL, WALL, WALL ; 3c + tilecoll WALL, WALL, WALL, WALL ; 3d + tilecoll WALL, WALL, WALL, WALL ; 3e + tilecoll WALL, WALL, FLOOR, FLOOR ; 3f + tilecoll WALL, WALL, WALL, FLOOR ; 40 + tilecoll WALL, WALL, FLOOR, FLOOR ; 41 + tilecoll WALL, WALL, FLOOR, WALL ; 42 + tilecoll WALL, WALL, WALL, WALL ; 43 + tilecoll WALL, FLOOR, WALL, FLOOR ; 44 + tilecoll WALL, FLOOR, WALL, FLOOR ; 45 + tilecoll FLOOR, WALL, FLOOR, WALL ; 46 + tilecoll WALL, WALL, FLOOR, FLOOR ; 47 + tilecoll WALL, FLOOR, WALL, WALL ; 48 + tilecoll FLOOR, FLOOR, WALL, WALL ; 49 + tilecoll FLOOR, WALL, WALL, WALL ; 4a + tilecoll FLOOR, WALL, FLOOR, WALL ; 4b + tilecoll WALL, WALL, FLOOR, FLOOR ; 4c + tilecoll WALL, FLOOR, FLOOR, FLOOR ; 4d + tilecoll FLOOR, WALL, FLOOR, FLOOR ; 4e + tilecoll FLOOR, FLOOR, WALL, WALL ; 4f + tilecoll FLOOR, WALL, FLOOR, WALL ; 50 + tilecoll WALL, FLOOR, WALL, FLOOR ; 51 + tilecoll WALL, WALL, WALL, WALL ; 52 + tilecoll WALL, WALL, WALL, WALL ; 53 + tilecoll WALL, WALL, WALL, WALL ; 54 + tilecoll WALL, FLOOR, WALL, WALL ; 55 + tilecoll WALL, WALL, WALL, WALL ; 56 + tilecoll WALL, FLOOR, WALL, WALL ; 57 + tilecoll FLOOR, WALL, WALL, WALL ; 58 + tilecoll WALL, WALL, WALL, WALL ; 59 + tilecoll WALL, WALL, WALL, WALL ; 5a + tilecoll WALL, WALL, WALL, WALL ; 5b + tilecoll WALL, WALL, FLOOR, WALL ; 5c + tilecoll WALL, WALL, WALL, FLOOR ; 5d + tilecoll WALL, WALL, WALL, FLOOR ; 5e + tilecoll WALL, WALL, FLOOR, WALL ; 5f + tilecoll WALL, WALL, WALL, WALL ; 60 + tilecoll WALL, WALL, WALL, WALL ; 61 + tilecoll FLOOR, WALL, WALL, WALL ; 62 + tilecoll WALL, WALL, FLOOR, WALL ; 63 + tilecoll WALL, WALL, WALL, FLOOR ; 64 + tilecoll FLOOR, WALL, WALL, FLOOR ; 65 + tilecoll WALL, FLOOR, FLOOR, WALL ; 66 + tilecoll WALL, FLOOR, WALL, WALL ; 67 + tilecoll FLOOR, WALL, WALL, WALL ; 68 + tilecoll WALL, WALL, WALL, FLOOR ; 69 + tilecoll WALL, WALL, FLOOR, WALL ; 6a + tilecoll WALL, WALL, FLOOR, WALL ; 6b + tilecoll WALL, WALL, WALL, WALL ; 6c + tilecoll WALL, WALL, WALL, WALL ; 6d + tilecoll WALL, WALL, WALL, WALL ; 6e + tilecoll FLOOR, FLOOR, WALL, FLOOR ; 6f + tilecoll FLOOR, FLOOR, FLOOR, WALL ; 70 diff --git a/data/tilesets/lavendercrypt_metatiles.bin b/data/tilesets/lavendercrypt_metatiles.bin new file mode 100644 index 0000000..7b8b7b5 --- /dev/null +++ b/data/tilesets/lavendercrypt_metatiles.bin @@ -0,0 +1,149 @@ +GGGGGGGGGGGGGGGG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + ! #1003=>=> + + + + + + + + + +  + +"""""""""""""""" + + + + + + + + + + + + + + + + + +-***+,::+,+,****::::***.::+,+,+,()()89898989HIHI+,+,+,+,'/7?=>+,+,+,+, 0000+,+,-***;:::****::::+,+,***.:::<'/7?=> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +'/ +7?=> +'/7? +=>    \ No newline at end of file diff --git a/data/wild/kanto_grass.asm b/data/wild/kanto_grass.asm index dcc9a7c..aed7466 100644 --- a/data/wild/kanto_grass.asm +++ b/data/wild/kanto_grass.asm @@ -901,5 +901,33 @@ KantoGrassWildMons: dbw 36, PARAS dbw 36, PIKACHU end_grass_wildmons - + + def_grass_wildmons LAVENDER_CRYPT + db 4 percent, 2 percent, 8 percent ; encounter rates: morn/day/nite + ; morn + dbw 33, GASTLY + dbw 36, GASTLY + dbw 32, HAUNTER + dbw 44, CUBONE + dbw 44, WISPIRIT + dbw 44, WISPIRIT + dbw 44, MAROWAK + ; day + dbw 32, GASTLY + dbw 34, GASTLY + dbw 38, HAUNTER + dbw 36, CUBONE + dbw 46, WISPIRIT + dbw 46, WISPIRIT + dbw 46, MAROWAK + ; nite + dbw 34, GASTLY + dbw 38, MISDREAVUS + dbw 36, HAUNTER + dbw 32, KITSEN + dbw 42, WISPIRIT + dbw 42, WISPIRIT + dbw 42, GENGAR + end_grass_wildmons + db -1 ; end diff --git a/engine/overworld/wildmons.asm b/engine/overworld/wildmons.asm index cf86cfe..c5b08da 100644 --- a/engine/overworld/wildmons.asm +++ b/engine/overworld/wildmons.asm @@ -27,7 +27,7 @@ LoadWildMonData: FindNest: ; Parameters: -; e: 0 = Johto, 1 = Kanto +; e: 0 = Johto, 1 = Kanto, 2 = Nihon ; wNamedObjectIndex: species hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT diff --git a/engine/tilesets/tileset_anims.asm b/engine/tilesets/tileset_anims.asm index 4a7cb2c..7edbe60 100644 --- a/engine/tilesets/tileset_anims.asm +++ b/engine/tilesets/tileset_anims.asm @@ -318,6 +318,7 @@ TilesetKabutoWordRoomAnim: TilesetOmanyteWordRoomAnim: TilesetAerodactylWordRoomAnim: TilesetMuseumAnim: +TilesetLavenderCryptAnim: dw NULL, WaitTileAnimation dw NULL, WaitTileAnimation dw NULL, WaitTileAnimation diff --git a/gfx/tileset_palette_maps.asm b/gfx/tileset_palette_maps.asm index 678eb18..5bc8581 100644 --- a/gfx/tileset_palette_maps.asm +++ b/gfx/tileset_palette_maps.asm @@ -108,6 +108,9 @@ INCLUDE "gfx/tilesets/battle_tower_inside_palette_map.asm" TilesetBattleTowerOutsidePalMap: INCLUDE "gfx/tilesets/battle_tower_outside_palette_map.asm" +TilesetLavenderCryptPalMap: +INCLUDE "gfx/tilesets/lavendercrypt_palette_map.asm" + MapGroupPalettes: ; unreferenced ; entries correspond to MAPGROUP_* constants rept NUM_MAP_GROUPS diff --git a/gfx/tilesets.asm b/gfx/tilesets.asm index e796713..8550176 100644 --- a/gfx/tilesets.asm +++ b/gfx/tilesets.asm @@ -576,3 +576,15 @@ INCBIN "data/tilesets/pokecenter_metatiles.bin" TilesetPokecenterColl:: INCLUDE "data/tilesets/pokecenter_collision.asm" + +TilesetLavenderCryptAttr:: +INCBIN "data/tilesets/lavendercrypt_attributes.bin" + +TilesetLavenderCryptGFX:: +INCBIN "gfx/tilesets/lavendercrypt.2bpp.lz" + +TilesetLavenderCryptMeta:: +INCBIN "data/tilesets/lavendercrypt_metatiles.bin" + +TilesetLavenderCryptColl:: +INCLUDE "data/tilesets/lavendercrypt_collision.asm" diff --git a/gfx/tilesets/lavendercrypt.png b/gfx/tilesets/lavendercrypt.png new file mode 100644 index 0000000..55bbd5f Binary files /dev/null and b/gfx/tilesets/lavendercrypt.png differ diff --git a/gfx/tilesets/lavendercrypt_palette_map.asm b/gfx/tilesets/lavendercrypt_palette_map.asm new file mode 100644 index 0000000..e69de29 diff --git a/maps/LavenderCrypt.ablk b/maps/LavenderCrypt.ablk index eeb5760..1fe0124 100644 Binary files a/maps/LavenderCrypt.ablk and b/maps/LavenderCrypt.ablk differ diff --git a/maps/LavenderCrypt.asm b/maps/LavenderCrypt.asm index fa741a9..f64a05a 100644 --- a/maps/LavenderCrypt.asm +++ b/maps/LavenderCrypt.asm @@ -9,6 +9,7 @@ LavenderCrypt_MapEvents: db 0, 0 ; filler def_warp_events + warp_event 8, 17, SOUL_HOUSE, 3 def_coord_events diff --git a/maps/SoulHouse.ablk b/maps/SoulHouse.ablk index ade1108..a17aff8 100644 --- a/maps/SoulHouse.ablk +++ b/maps/SoulHouse.ablk @@ -1 +1 @@ -(+*(+*+((( +* \ No newline at end of file +(+%*(+*+((( +* \ No newline at end of file diff --git a/maps/SoulHouse.asm b/maps/SoulHouse.asm index f23c592..807f66c 100644 --- a/maps/SoulHouse.asm +++ b/maps/SoulHouse.asm @@ -76,13 +76,14 @@ SoulHouse_MapEvents: def_warp_events warp_event 4, 7, LAVENDER_TOWN, 6 warp_event 5, 7, LAVENDER_TOWN, 6 + warp_event 4, 2, LAVENDER_CRYPT, 1 def_coord_events def_bg_events def_object_events - object_event 4, 2, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, MrFuji, -1 + object_event 5, 2, SPRITE_GRAMPS, SPRITEMOVEDATA_STANDING_DOWN, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, MrFuji, -1 object_event 7, 3, SPRITE_TEACHER, SPRITEMOVEDATA_WALK_LEFT_RIGHT, 1, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, SoulHouseTeacherScript, -1 object_event 2, 5, SPRITE_LASS, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, SoulHouseLassScript, -1 object_event 1, 3, SPRITE_GRANNY, SPRITEMOVEDATA_STANDING_UP, 0, 0, -1, -1, PAL_NPC_BLUE, OBJECTTYPE_SCRIPT, 0, SoulHouseGrannyScript, -1