From 583847ae2cf216187679c4d53189cefece8515de Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Fri, 28 Apr 2023 03:08:54 +0100 Subject: [PATCH] Citrine Mart This adds Citrine Mart, which is battle-centric. It sells all the "strongest" items and makes Max Revives renewable. I made a specialised tileset for Citrine Mart, combining the old and new styles to make something that feels right. --- constants/map_constants.asm | 2 +- constants/tileset_constants.asm | 1 + data/maps/headers/CitrineMart.asm | 2 ++ data/maps/map_header_banks.asm | 2 +- data/maps/map_header_pointers.asm | 4 ++-- data/maps/objects/CitrineCity.asm | 1 + data/maps/objects/CitrineMart.asm | 16 ++++++++++++++ data/maps/songs.asm | 2 +- data/tilesets/bookshelf_tile_ids.asm | 7 ++++++ data/tilesets/collision_tile_ids.asm | 5 +++-- data/tilesets/tileset_headers.asm | 1 + data/tilesets/warp_tile_ids.asm | 4 ++++ gfx/blocksets/betamart.bst | Bin 0 -> 256 bytes gfx/tilesets.asm | 3 +++ gfx/tilesets/betamart.png | Bin 0 -> 1659 bytes maps.asm | 5 +++++ maps/CitrineMart.blk | Bin 0 -> 16 bytes scan_includes.exe.stackdump | 10 ++++----- scripts/CitrineMart.asm | 32 +++++++++++++++++++++++++++ text.asm | 1 + text/CitrineMart.asm | 15 +++++++++++++ 21 files changed, 101 insertions(+), 12 deletions(-) create mode 100644 data/maps/headers/CitrineMart.asm create mode 100644 data/maps/objects/CitrineMart.asm create mode 100644 gfx/blocksets/betamart.bst create mode 100644 gfx/tilesets/betamart.png create mode 100644 maps/CitrineMart.blk create mode 100644 scripts/CitrineMart.asm create mode 100644 text/CitrineMart.asm diff --git a/constants/map_constants.asm b/constants/map_constants.asm index 77379a7e..ecb1930b 100644 --- a/constants/map_constants.asm +++ b/constants/map_constants.asm @@ -224,7 +224,7 @@ DEF FIRST_INDOOR_MAP EQU const_value map_const ROCKET_HIDEOUT_B3F, 15, 14 ; $CA - Currently unused map_const ROCKET_HIDEOUT_B4F, 15, 12 ; $CB - Currently unused map_const ROCKET_HIDEOUT_ELEVATOR, 3, 4 ; $CC - Currently unused - map_const UNUSED_MAP_CC, 0, 0 ; $CD - Unused + map_const CITRINE_MART, 4, 4 ; $CD - was UNUSED_MAP_CC map_const UNUSED_MAP_CD, 0, 0 ; $CE - Unused map_const UNUSED_MAP_CE, 0, 0 ; $CF - Unused map_const SILPH_CO_2F, 15, 9 ; $D0 diff --git a/constants/tileset_constants.asm b/constants/tileset_constants.asm index 26d2b146..97af1b5c 100644 --- a/constants/tileset_constants.asm +++ b/constants/tileset_constants.asm @@ -29,4 +29,5 @@ const CITRINE ; 25 const CELESTE ; 26 const ROCKETHOUSE + const BETAMART DEF NUM_TILESETS EQU const_value diff --git a/data/maps/headers/CitrineMart.asm b/data/maps/headers/CitrineMart.asm new file mode 100644 index 00000000..f29f93d5 --- /dev/null +++ b/data/maps/headers/CitrineMart.asm @@ -0,0 +1,2 @@ + map_header CitrineMart, CITRINE_MART, BETAMART, 0 + end_map_header diff --git a/data/maps/map_header_banks.asm b/data/maps/map_header_banks.asm index f9e926ba..d6e844f8 100644 --- a/data/maps/map_header_banks.asm +++ b/data/maps/map_header_banks.asm @@ -206,7 +206,7 @@ MapHeaderBanks:: db BANK(RocketHideoutB3F_h) db BANK(RocketHideoutB4F_h) db BANK(RocketHideoutElevator_h) - db $01 ; UNUSED_MAP_CC + db BANK(CitrineMart_h) ; was UNUSED_MAP_CC db $01 ; UNUSED_MAP_CD db $01 ; UNUSED_MAP_CE db BANK(SilphCo2F_h) diff --git a/data/maps/map_header_pointers.asm b/data/maps/map_header_pointers.asm index 480e3c26..009469cc 100644 --- a/data/maps/map_header_pointers.asm +++ b/data/maps/map_header_pointers.asm @@ -206,8 +206,8 @@ MapHeaderPointers:: dw RocketHideoutB3F_h dw RocketHideoutB4F_h dw RocketHideoutElevator_h - dw RocketHideoutElevator_h ; UNUSED_MAP_CC - dw RocketHideoutElevator_h ; UNUSED_MAP_CD + dw CitrineMart_h ; UNUSED_MAP_CC + dw RocketHideoutElevator_h ; UNUSED_MAP_CD, used hideout elevator dw RocketHideoutElevator_h ; UNUSED_MAP_CE dw SilphCo2F_h dw SilphCo3F_h diff --git a/data/maps/objects/CitrineCity.asm b/data/maps/objects/CitrineCity.asm index ab2ecbfb..0f21546d 100644 --- a/data/maps/objects/CitrineCity.asm +++ b/data/maps/objects/CitrineCity.asm @@ -5,6 +5,7 @@ CitrineCity_Object: warp_event 9, 27, CITRINE_ROCKET_HOUSE, 1 warp_event 9, 17, CITRINE_TRADEBACK_HOUSE, 1 warp_event 15, 17, CITRINE_POKECENTER, 1 + warp_event 15, 27, CITRINE_MART, 1 def_bg_events diff --git a/data/maps/objects/CitrineMart.asm b/data/maps/objects/CitrineMart.asm new file mode 100644 index 00000000..fdf633db --- /dev/null +++ b/data/maps/objects/CitrineMart.asm @@ -0,0 +1,16 @@ +CitrineMart_Object: + db $0e ; border block + + def_warp_events + warp_event 2, 7, CITRINE_CITY, 4 + warp_event 3, 7, CITRINE_CITY, 4 + + def_bg_events + + def_object_events + object_event 2, 1, SPRITE_CLERK, STAY, RIGHT, 1 ; person + object_event 6, 6, SPRITE_COOLTRAINER_F, STAY, UP, 2 ; person + object_event 7, 6, SPRITE_CAT, STAY, UP, 3 ; person + object_event 1, 1, SPRITE_CLEFAIRY, STAY, DOWN, 4 ; person + + def_warps_to CITRINE_MART diff --git a/data/maps/songs.asm b/data/maps/songs.asm index f1518604..148be2ba 100644 --- a/data/maps/songs.asm +++ b/data/maps/songs.asm @@ -205,7 +205,7 @@ MapSongBanks:: db MUSIC_DUNGEON1, 0 ; ROCKET_HIDEOUT_B3F db MUSIC_DUNGEON1, 0 ; ROCKET_HIDEOUT_B4F db MUSIC_DUNGEON1, 0 ; ROCKET_HIDEOUT_ELEVATOR - db MUSIC_DUNGEON1, 0 ; UNUSED_MAP_CC + db MUSIC_POKECENTER, 0 ; CITRINE_MART, was UNUSED_MAP_CC db MUSIC_DUNGEON1, 0 ; UNUSED_MAP_CD db MUSIC_DUNGEON1, 0 ; UNUSED_MAP_CE db MUSIC_SILPH_CO, 0 ; SILPH_CO_2F diff --git a/data/tilesets/bookshelf_tile_ids.asm b/data/tilesets/bookshelf_tile_ids.asm index e321c6fb..96d893b5 100644 --- a/data/tilesets/bookshelf_tile_ids.asm +++ b/data/tilesets/bookshelf_tile_ids.asm @@ -26,4 +26,11 @@ BookshelfTileIDs: bookshelf_tile PREGYM, $57, BookOrSculptureText bookshelf_tile ROCKETHOUSE, $38, BookOrSculptureText bookshelf_tile ROCKETHOUSE, $39, BookOrSculptureText + bookshelf_tile BETAMART, $38, PokemonStuffText + bookshelf_tile BETAMART, $39, PokemonStuffText + bookshelf_tile BETAMART, $3B, PokemonStuffText + bookshelf_tile BETAMART, $31, BookOrSculptureText + bookshelf_tile BETAMART, $30, BookOrSculptureText + bookshelf_tile BETAMART, $4E, PokemonStuffText + bookshelf_tile BETAMART, $4F, PokemonStuffText db -1 ; end diff --git a/data/tilesets/collision_tile_ids.asm b/data/tilesets/collision_tile_ids.asm index 079ab39f..1e2f5a54 100644 --- a/data/tilesets/collision_tile_ids.asm +++ b/data/tilesets/collision_tile_ids.asm @@ -49,8 +49,6 @@ Interior_Coll:: Cavern_Coll:: coll_tiles $05, $15, $18, $1a, $20, $21, $22, $2a, $2d, $30 - coll_tiles ; unused - Lobby_Coll:: coll_tiles $14, $17, $1a, $1c, $20, $38, $45 @@ -80,3 +78,6 @@ Celeste_Coll:: RocketHouse_Coll:: coll_tiles $13, $31, $01, $53 + +BetaMart_Coll:: + coll_tiles $01, $11, $1C, $1D, $1E, $1F, $0C, $0D, $0E, $0F, $4D, $4C diff --git a/data/tilesets/tileset_headers.asm b/data/tilesets/tileset_headers.asm index 63dafa71..7e2ac92a 100644 --- a/data/tilesets/tileset_headers.asm +++ b/data/tilesets/tileset_headers.asm @@ -37,4 +37,5 @@ Tilesets: tileset Citrine, -1, -1, -1, $3F, TILEANIM_WATER_FLOWER tileset Celeste, -1, -1, -1, $18, TILEANIM_WATER_FLOWER tileset RocketHouse, $0A, -1, -1, -1, TILEANIM_NONE + tileset BetaMart, $18, -1, -1, -1, TILEANIM_NONE assert_table_length NUM_TILESETS diff --git a/data/tilesets/warp_tile_ids.asm b/data/tilesets/warp_tile_ids.asm index 437b886d..005228c9 100644 --- a/data/tilesets/warp_tile_ids.asm +++ b/data/tilesets/warp_tile_ids.asm @@ -28,6 +28,7 @@ WarpTileIDPointers: dw .CitrineWarpTileIDs dw .CelesteWarpTileIDs dw .RocketHouseWarpTileIDs + dw .BetaMartWarpTileIDs assert_table_length NUM_TILESETS MACRO warp_tiles @@ -106,6 +107,9 @@ ENDM .RocketHouseWarpTileIDs: warp_tiles $53 +.BetaMartWarpTileIDs: + warp_tiles $1C, $1D, $1E, $1F, $0C, $0D, $0E, $0F, $4B, $4C + .ShipPortWarpTileIDs: .ClubWarpTileIDs: warp_tiles ; end diff --git a/gfx/blocksets/betamart.bst b/gfx/blocksets/betamart.bst new file mode 100644 index 0000000000000000000000000000000000000000..711cfe271d654b520fa1efa6e15b540d697cb64a GIT binary patch literal 256 zcmZQ!Wnd5y1z|=(5m7-#1_lb}?}=aUES9T|a+6 zf0#HAFCV{*teiX(GZV9ru#m8VqJpA288*EP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf1`tU^K~#8N?V3?i z<2n#U!>d^s?0_HG1}p`(L4Mc)?2PAQa(Q=}mSjr~N%3;3RF);R)b75L9cHesudhFL z6>e{DcMlH_yXWWU^m=u5br{*lwEm%X8s6XE54CW`+uK_) z`CK0#A9qhrPlwU#!1mMvK;R_9p=~KVLrnnmJBpPHV007pGOxYG3DBEF0`MCJ5R>k^ zoOmIED1hEg)QkN7=Wt)7mVAHcbBB}6ON}Uqr4UpFRz(o2bBx!Y!?j43biYQmpA(*F zKW05KTcN}QvEjaFR}<3=#angZZCO3yw(#ptfZ8sPyRrtSK&wO$nG5Y$D7m_h&=f!| z`CB-!1+}CrAte6T3373bzSD`X7qtnGy|)XugLp5_;soGhsHa4f+*+cQq)aSZGWu#H zzFtI(`DhM^QuR!19hqC~DAri}ARNJnfL{?L6F=mu>hY>R;Qr?3CKb|J;#%x}eFNy* zK+mUk`R_L1$#y(GB|)gY)dupbc>*kfiF(S`D7oNu;GPoKc7J+`<7@gWfOY~-SqcgB zBBDS_f?3KY0yqbh3?&)3deYVI&_7Zf=GU(GgmX%%EQQ2+QJbiVVhz7S0379zB{;S* zRs~3yCx{}kP;?*1P<)pIf*|Q}+}0@hE`nZ=@b{=0F@O;sx;3VRb`bV!AI84{Abtlp zN_Iy4OQ3%oV#mGP$G;MiaMon)CCSETgj4zk_$lP~uXzQ4Cttg~mi)-t`~B|z{{GPWA0D76wivujj2ct2r9IBGhT57fWZSzw_QY-!RzFz* z)h98`_k#O4*73HiA2NHt_x_%e;q7sJR+f(QBAZD7bG-*_k>Cf%Xm%9pcrEp*ee?v; z2~eWeKRw5ME$w9Ol4#FZ?ZDdn^a1@|7o|1Tu2U`A`81=97_y1=gt!-7sZkjpeCZy2_WJQX$cbIm^g<&PnMW1D9xMsALC0TzP}t+GWrd$ z6$GD$Ced7%?lgk3)vlBeEqqPAmNPzpvC{My_K z`sn(Od~h+A@b%+7E!@VF3fa1h&Bg&EyUQq}bI6|S^nhP}snm#Lwj!{@A zBaX|!76}dg44mdUwDf^8{RmqN#~40H;qe5h&8;JtG1N7-R2Q+|kq?>^O7_vV2j+=8 zdnx!i3xHREj&o0XsSdK)LI6r&FD`&c6ol|KGvTzT1w9HNqi4+w2_VKV<|XS-1+bK# z6oBubEU2>gaUyHu!F^37L(d|gRFBDyV;v=4S759soA#{)0RAjO{t54Q-_Po2VCFP| z^aK#J(#|R+dnq0yuV?eBKZ*k~|9p;8KkYqNC&n-X-x()cP5`V{71@lUIk-;2{Hv&M za`dYJ?OxR8<9vL?ZDgnV+7j2(T=KtEG|ua5ud4TgEixYZ892>zxa&h|Z`di*o|=YE2k4~JZYI8B5hw literal 0 HcmV?d00001 diff --git a/maps.asm b/maps.asm index 53e373d6..d1689917 100644 --- a/maps.asm +++ b/maps.asm @@ -1340,3 +1340,8 @@ INCLUDE "data/maps/headers/CitrinePokecenter.asm" INCLUDE "scripts/CitrinePokecenter.asm" INCLUDE "data/maps/objects/CitrinePokecenter.asm" CitrinePokecenter_Blocks: INCBIN "maps/CitrinePokecenter.blk" + +INCLUDE "data/maps/headers/CitrineMart.asm" +INCLUDE "scripts/CitrineMart.asm" +INCLUDE "data/maps/objects/CitrineMart.asm" +CitrineMart_Blocks: INCBIN "maps/CitrineMart.blk" diff --git a/maps/CitrineMart.blk b/maps/CitrineMart.blk new file mode 100644 index 0000000000000000000000000000000000000000..0e6f152eaad0ef6dae114ca0a69fce82c1941d4a GIT binary patch literal 16 VcmZQzWM<{$VgdqgZYEwPCIA9f08Rh^ literal 0 HcmV?d00001 diff --git a/scan_includes.exe.stackdump b/scan_includes.exe.stackdump index 55c78a89..cf400d67 100644 --- a/scan_includes.exe.stackdump +++ b/scan_includes.exe.stackdump @@ -1,15 +1,15 @@ Exception: STATUS_ACCESS_VIOLATION at rip=00100401246 -rax=FFFFFFF7FFF970C1 rbx=0000000000000209 rcx=0000000800000010 -rdx=0000000000000000 rsi=0000000800058C12 rdi=0000000000000000 +rax=FFFFFFF7FFF97031 rbx=0000000000000794 rcx=0000000800000010 +rdx=0000000000000000 rsi=0000000800058944 rdi=0000000000000000 r8 =00000000FFFFC7C4 r9 =0000000000000000 r10=0000000100000000 -r11=0000000100401282 r12=0000000800068F40 r13=0000000100403148 +r11=0000000100401282 r12=0000000800068FD0 r13=0000000100403148 r14=0000000000000000 r15=0000000000000001 rbp=0000000100403156 rsp=00000000FFFFCA60 -program=C:\cygwin64\home\chipp\kep-hack\tools\scan_includes.exe, pid 2597, thread main +program=C:\cygwin64\home\chipp\kep-hack\tools\scan_includes.exe, pid 3411, thread main cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B Stack trace: Frame Function Args -00100403156 00100401246 (00800058C12, 00000000022, 00100403166, 000FFFFCB90) +00100403156 00100401246 (00800058944, 00000000022, 00100403166, 000FFFFCB90) 00100403156 00100401409 (00000000000, 00100000001, 00180227860, 00100407000) 00100403178 00100401C87 (00000000020, 00000000000, 00180049B11, 00180048A70) 000FFFFCD30 00180049B7D (00000000000, 00000000000, 00000000000, 00000000000) diff --git a/scripts/CitrineMart.asm b/scripts/CitrineMart.asm new file mode 100644 index 00000000..2029e8ff --- /dev/null +++ b/scripts/CitrineMart.asm @@ -0,0 +1,32 @@ +CitrineMart_Script: + jp EnableAutoTextBoxDrawing + +CitrineMart_TextPointers: + dw CitrineCashierText + dw CitrineMartText2 + dw CitrineMartText3 + dw CitrineMartText4 + +CitrineMartText2: + text_far _CitrineMartText2 + text_end + +CitrineMartText3: + text_far _CitrineMartText3 + text_asm + ld a, PERSIAN + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +CitrineMartText4: + text_far _CitrineMartText4 + text_asm + ld a, CLEFAIRY + call PlayCry + call WaitForSoundToFinish + jp TextScriptEnd + +; I do want to make a "steroid" item that fixes DVs. +CitrineCashierText:: + script_mart ULTRA_BALL, FULL_RESTORE, MAX_REPEL, MAX_REVIVE, ESCAPE_ROPE, HP_UP, PROTEIN, IRON, CARBOS, CALCIUM \ No newline at end of file diff --git a/text.asm b/text.asm index e6c9088c..e54a5284 100644 --- a/text.asm +++ b/text.asm @@ -289,6 +289,7 @@ INCLUDE "text/SilphGauntlet1F.asm" INCLUDE "text/SilphGauntlet4F.asm" INCLUDE "text/SilphGauntlet7F.asm" INCLUDE "text/CitrinePokecenter.asm" +INCLUDE "text/CitrineMart.asm" SECTION "Pokédex Text", ROMX diff --git a/text/CitrineMart.asm b/text/CitrineMart.asm new file mode 100644 index 00000000..f318527c --- /dev/null +++ b/text/CitrineMart.asm @@ -0,0 +1,15 @@ +_CitrineMartText2:: + text "They have some" + line "strong vitamins" + cont "here. Which do" + cont "you want," + cont "PERSIAN?" + done + +_CitrineMartText3:: + text "PERSIAN: Nyaaa!" + done + +_CitrineMartText4:: + text "CLEFAIRY: Pipii!" + done