From 5ea0fc5de911a5fc40dcd8b4566cf35ea610c77b Mon Sep 17 00:00:00 2001 From: Llinos Evans <36418502+PlagueVonKarma@users.noreply.github.com> Date: Mon, 25 Dec 2023 22:15:27 +0000 Subject: [PATCH] New starter pathing, beautify Oak's Lab Please stop asking me about the sprite limit i beg u Ok so this commit does the following; - Oak's Lab now uses the Fossil Lab tileset, featuring lots of new contraptions etc to make up for the old removed aides. - Places the Pikachu and Eevee starters in a new place, which results in a slightly blocky mess, but does the job. - Fossil Lab tileset graphic has many new things. Lots of bad tiles in the blockset in case we want to use this more. - Changes the rival's pathing so he, y'know, works on the new map... - Re-adds the Oak email thing, but I had to do like 4 stupid workarounds because it was broken for unknown reasons. Just made it a generic bg event with no issues. - Removed the old oak email event; no visible difference. --- data/maps/headers/OaksLab.asm | 2 +- data/maps/objects/OaksLab.asm | 8 ++- data/text_predef_pointers.asm | 2 +- data/tilesets/collision_tile_ids.asm | 4 +- .../events/hidden_objects/oaks_lab_email.asm | 16 ++--- gfx/blocksets/fossillab.bst | Bin 928 -> 928 bytes gfx/tilesets/fossillab.png | Bin 2234 -> 2280 bytes maps/OaksLab.blk | 3 +- scripts/OaksLab.asm | 62 ++++++++++++++---- 9 files changed, 69 insertions(+), 28 deletions(-) diff --git a/data/maps/headers/OaksLab.asm b/data/maps/headers/OaksLab.asm index a31d9d37..0cc37744 100644 --- a/data/maps/headers/OaksLab.asm +++ b/data/maps/headers/OaksLab.asm @@ -1,2 +1,2 @@ - map_header OaksLab, OAKS_LAB, GYM, 0 + map_header OaksLab, OAKS_LAB, FOSSILLAB, 0 end_map_header diff --git a/data/maps/objects/OaksLab.asm b/data/maps/objects/OaksLab.asm index f25c51b2..a6657727 100644 --- a/data/maps/objects/OaksLab.asm +++ b/data/maps/objects/OaksLab.asm @@ -1,11 +1,13 @@ OaksLab_Object: - db $3 ; border block + db $17 ; border block def_warp_events warp_event 6, 11, LAST_MAP, 3 warp_event 7, 11, LAST_MAP, 3 def_bg_events + bg_event 10, 6, 30 ; PC because it keeps breaking + bg_event 11, 6, 30 ; PC because it keeps breaking def_object_events object_event 6, 4, SPRITE_BLUE, STAY, NONE, 1, OPP_RIVAL1, 1 @@ -19,7 +21,7 @@ OaksLab_Object: ;object_event 2, 11, SPRITE_GIRL, WALK, UP_DOWN, 9 ; person ;object_event 4, 11, SPRITE_SCIENTIST, STAY, NONE, 10 ; person ;object_event 11, 11, SPRITE_SCIENTIST, STAY, NONE, 11 ; person - object_event 4, 3, SPRITE_POKE_BALL, STAY, NONE, 28 ; person, Pikachu - object_event 5, 3, SPRITE_POKE_BALL, STAY, NONE, 29 ; person, Eevee + object_event 8, 6, SPRITE_POKE_BALL, STAY, NONE, 28 ; person, Pikachu + object_event 9, 6, SPRITE_POKE_BALL, STAY, NONE, 29 ; person, Eevee def_warps_to OAKS_LAB diff --git a/data/text_predef_pointers.asm b/data/text_predef_pointers.asm index ca6e0362..5f9aff3d 100644 --- a/data/text_predef_pointers.asm +++ b/data/text_predef_pointers.asm @@ -11,7 +11,7 @@ TextPredefs:: add_tx_pre PushStartText ; 05 add_tx_pre SaveOptionText ; 06 add_tx_pre StrengthsAndWeaknessesText ; 07 - add_tx_pre OakLabEmailText ; 08 +; add_tx_pre OakLabEmailText ; 08 add_tx_pre AerodactylFossilText ; 09 add_tx_pre Route15UpstairsBinocularsText ; 0A add_tx_pre KabutopsFossilText ; 0B diff --git a/data/tilesets/collision_tile_ids.asm b/data/tilesets/collision_tile_ids.asm index ba42e2dd..2c2c0669 100644 --- a/data/tilesets/collision_tile_ids.asm +++ b/data/tilesets/collision_tile_ids.asm @@ -55,10 +55,12 @@ Lobby_Coll:: Mansion_Coll:: coll_tiles $01, $05, $11, $12, $14, $1a, $1c, $2c, $53 -FossilLab_Coll:: ; It has the same tileset except the trees are the fossil machine, so... Lab_Coll:: coll_tiles $0c, $26, $16, $1e, $34, $37 +FossilLab_Coll:: ; Originally just the Lab collision, but now that Oak uses it, it's using separate collision. Added plenty just to be sure. + coll_tiles $0c, $26, $16, $1e, $34, $37, $17, $4C, $47, $58, $57, $59, $27, $4D + Club_Coll:: coll_tiles $0f, $1a, $1f, $26, $28, $29, $2c, $2d, $2e, $2f, $41 diff --git a/engine/events/hidden_objects/oaks_lab_email.asm b/engine/events/hidden_objects/oaks_lab_email.asm index b66babe0..0a244a35 100644 --- a/engine/events/hidden_objects/oaks_lab_email.asm +++ b/engine/events/hidden_objects/oaks_lab_email.asm @@ -1,10 +1,6 @@ -DisplayOakLabEmailText: - ld a, [wSpritePlayerStateData1FacingDirection] - cp SPRITE_FACING_UP - ret nz - call EnableAutoTextBoxDrawing - tx_pre_jump OakLabEmailText - -OakLabEmailText:: - text_far _OakLabEmailText - text_end +;DisplayOakLabEmailText: +; ld a, [wSpritePlayerStateData1FacingDirection] +; cp SPRITE_FACING_UP +; ret nz +; call EnableAutoTextBoxDrawing +; tx_pre_jump OakLabEmailText diff --git a/gfx/blocksets/fossillab.bst b/gfx/blocksets/fossillab.bst index 91f667919f1ff0d80d916c4e4c36a588b30a62ef..ba89bc108453d94300edde9140526cf2595530d1 100644 GIT binary patch delta 267 zcmZ3$zJPs#fq;ahgrte7iK#mjOmqlPfU#k;f}(|ifS{!z8@sx%kGQ-0#0?4x4vvma z0fB)*;Smv$Aa#yFejtz^0p(Bp@W243-_gn4Jut}K9ikE@>h2EI8-d`tyH8>=fa?L8 z?+7$MkWr0M4Tu;S)f^nv7`2qZ_Ih{*!Q3)Afk}%E;;hLNm^K)oyGscQ`1l#s5xpp0^rqOuJ0K!~3nY9B12}>sI10!Dj=)Hc;0QLFzy8vuY2Rzp zhyAd-&=GM~BJLgpHPBZV*FTD6xkzvVi;@uePQc(q6lFiU>H)KyFdoo95?TK9yq+N# z#YEGZ8pToEwEsRyz%(UHy<4H~eE%>r(}Pt_c#Lbk37*M+_F zGycbqA6Ij`q#r(i{#^DQ;o*-gsT`A(V|(ZdM~ScW)Q=x;&3{%O6f?!~t!N9tlbuO8 zqY@nw?z=t~LVS+??1AyZ@3$f!qK&Hk$XtFTvXyDx$<;JUIS zyAgDK&K20vI)6IdTd|ryi_wH?Et$R3PJk8Yd0{AlnM1UrPa&wko5%ZO5v^b+s0bj+ z6`2lgna@=_tm5e7ZpFJlvP4c)a)Kvcc;GWg4i{*iOrJh%A)`O&XP2Y#6wRJ1lFb2K zJAOpz>(Pc$pH8`>v;`n1Dmfu@RtxIzLdd{|2kxz4{(mi(@Oy{$z3cIL{K_D*Plf#Z z`8ez<%XM_mc%0R>1vw|1+`A3;jdm?W`f(SctG3D)*^ut4z*Za?EAT~Y+k#@oSWt{6 zC}(i>4S-<)uhD>^S%-I~i5`3dT$dmwAuw`dgF56SBBG7r-K1v|pJ56Ss}`1*0=KO+qZ8Q`St79iv$vy6+tA^$?S=DBy*bhTT&&tl2g!)`qR+QKY zN}%gc5+Bi=S3d*0qtJK2BoXK^rV6x>t*M;i<2tt3eQUNRyyB_=fIukGUJ#QY?!}Wk zl@p{7QAYeDSUTS3_YS(1P1yQ<;Y?44y`%*I6Q@^;-U_x>$&PXg`cREge`HJ2uz$V9 zCt%)c?hJj%P02p^GRgvoA3Iqj0p-pSBC<9ld z0a=?T26#n+CwFz?#XcV&ZHue_9ZZFLaD3qrEg~jdDA7!wRX6?9Kvs08Mp)hz*?6rR z-+adlkI5=NP{mPgvK!;$G2`B2Ox$A3W1C_RS^QNHFTMeAC>FqkJ%0rtRCLRci%ib)VwuOWX0=#?Uvs(&Cdx&=NO6X44%zyXU?=z~oB|F-mfk(-b z4_Wf{oe)onYJnhGvD)3xjfZF>7QxED4%rYIr-F?A;I^x|U9M>VbLg2UvHr)F6ZR}@ zD{2gHO6eG{;lY=JQ`8R&Ja3Ps6gPV{2( zd9KE<`h;R6d>&-%kKl{^%VfvR3n1=vv84c30q)qEfD8pP3u;#Y9dT?N)A^qzJ<1iY zasnLXNPxQl9Djv19`TRZi(CD9OytF!PuI;0U~dvMeih(uhfI=i6xQcEPI6iRO1w@) zPtch#kLCd8x%tmPP$F-^Tb=@5;4%5$SM?)fQlR?jd?w7v+^>ED(6-vqQ5Vp!g7-Io zFPVSS(?+%pD60-1dq}k9N21eo3A| z_kk>?dXZNtfTLu=MV`SKiIR;dq4TqwKl}L%G2u!yJ9`T^F8~7INA)To^!c&LGXc_= zD53jc()bu?w=p4(uU=!3F2P&y*8?c&w5eUk{FIx219S=Mpm-`9t3Gk|x+2|szAH5R si|^$unIl=dP6z&R&6aWh&GmTq4}a9cu()wvdjJ3c07*qoM6N<$f?d5(sQ>@~ delta 2171 zcmV->2!!|O5xNnOR)0@PL_t(|Ue%ggQXDxDMZv)eao8VbeehudZ_&f);WF3hOes~5 zhB*;(R+XewzND^hbNl<1n*q@jlwK1?CICUPU%U9o6$aYei-oN_cE{p8$euzjvbZy3gQ5@ng~P#E*2y zw$T_T+C7^$^3#2sU4z!*nfhD`V&WeIanr?3Gs4FnasoKfFpLH_y877QxjVre@UhY( zy%EOxnj_F7KYwOp&tkNG7NZW8FPXl>PJj`N^TJR9GlO`}cnU%Nvvs^b7SRZHf{Fm5 z9FdLTS!Q$f97b{Ud1rC>36SB*7o#EoeV(ZhST9?Xd-Y2Szjj=Q>x_DQT!l^>QLQ<8 z9@mug^%X1iai7I?m8+ZpnX#kfJ1T_A*)8@saegK{bbrT1v`%DoeP?CP^ml+6dZEBr zwG}Xyrky0m1-kvHmU9{(&6hn;*&-bpt0G%v&s>2m@@)mhOdCTn>cBk32L|Gx=&KS1u7A%RV?A0-1~xHnW{1WwpE;F;*_e_2 zBe0*j*rND#VIKA?CbG2)w!`HeAd)%MbrOSC+DxyHUB%~mt58r}X3sK|z)>PQW40n& zyG^7gfRdtMReh^fcLweZY}pB0{n#^C5Km&cS`^Il6JRT80mPsRoQ(yb`wH~U98^EL zx_=Tn0gzu6(kGo=m`4NIwL*8!{r&w#{`&Rn{aWx0vgbZ;#9uFg7)D|#0(Y>J>^&$T zE3(6^K(vErg%XMDXX{93)`t%jkB^TR`S9>?kw8MTB8X&TGJT?a2f%o5-GFapmh33I zU^{av>5wQT%Vl)8qI? zP@g}mHVR{-E@yNC&gh;DTS zJw3f$^&!}^fJb7oqZFR(PT~c6MonuVz3G{wSgB=rq9awG>x?gzmu~?WS`m$;2q=y? zkHpJpu6?JoXslS+QUt5W&XEKay{@}-Pc5zE$c7BxI9&V2;yxx)c%RSLb${gY5-8)i zmP2lsUwiU1rz)sUiXs-r3T{Ui*;z?vi~bo}Bd!JUSxk~P4GC22M2unV6fl8bmn$nWYI+fbkdkB{V_JaDMm<_ zbPGL`{um#R8P^_T;ud2bpDFf`#a{(+`Ll30#vPp{U*oqFfRG_8FJ3U(2@ZCSz{gPm z=sshn8@hIW6qf=x%ScZuFMM95UL1RvB|-hw4z7~xcwxl#&|4KRaeuA)1oJyKWMGS$ zY>RTnUB}3+MBOAm9#t?pL7;L3CuhN9E)?r+x>j*|RWXLXTiAj%g z#QXmRF!)GZU-oq`+x<#-RS+372djkf%=;8j;R(SPFP5k?23!(mr>pCUHdI90vbEiY z5vTtYTz%Kil21|4RDTFUjzkGKI%*md$(~ij-O0Vr_kg?H0&_<#!n15`$r+~?fTQDo z^lMf|+hM40me(aG{Z!5^2D6c`acGrfh6aWd2$&cR(=;KtN#gBl>LG_WaN(vJ0 zErPz-L_C_~M*wJilxKq-tX0Vwr~f^G5)Z!fNpySnPB7l+J1wbrW|c__)VD|2Ud`V>pUG)_iTJ7r@peX#Oa`Ri79oXfLdfe*E(t zC)q6kC0-wio`0YtVIBY2Wu2@1O`sBa2D2cm_*5*J+=3TXmVEilb=8lINr7wpH#uvv z_Eic1M+J^oJCbC?u_6oJ3P&bC676!Srg539h`)zyrFyxBs}umi?mF#>)z~VyE1Z>l zIKsY)DtWOuy5k~ODS*9X!9}icR`Nl~juK{e`q+&44RlH$6*1vTG)Mair~eQ{0QjsS z=(JHl=+ihKTS?$WX4C}w&Pe_Y5|n>k`E-Eovs4sk88X*)IaCu<{wKhN~UeK?_K}^002ovPDHLkV1oX&9+3b5 diff --git a/maps/OaksLab.blk b/maps/OaksLab.blk index 0e87062e..91d6bb9a 100644 --- a/maps/OaksLab.blk +++ b/maps/OaksLab.blk @@ -1 +1,2 @@ -hhhghhhijijmnmnhhhhhh \ No newline at end of file +  # (   + 6 \ No newline at end of file diff --git a/scripts/OaksLab.asm b/scripts/OaksLab.asm index 052f2225..e820cc45 100644 --- a/scripts/OaksLab.asm +++ b/scripts/OaksLab.asm @@ -285,25 +285,31 @@ OaksLabScript8: ld de, .PikachuMovement1 jr z, .moveBlue .PikachuMovement1 - db NPC_MOVEMENT_LEFT + db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_DOWN db -1 ; end .Eevee ld de, .EeveeMovement1 - ld a, [wYCoord] - cp 4 ; is the player standing below the table? - jr z, .moveBlue - ld de, .EeveeMovement2 +; ld a, [wYCoord] +; cp 4 ; is the player standing below the table? +; jr z, .moveBlue +; ld de, .EeveeMovement2 jp .moveBlue .EeveeMovement1 +; db NPC_MOVEMENT_DOWN +; db NPC_MOVEMENT_LEFT +; db NPC_MOVEMENT_LEFT +; db NPC_MOVEMENT_UP + db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_RIGHT db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_LEFT - db NPC_MOVEMENT_LEFT - db NPC_MOVEMENT_UP db -1 ; end -.EeveeMovement2 - db NPC_MOVEMENT_LEFT - db NPC_MOVEMENT_LEFT +;.EeveeMovement2 +; db NPC_MOVEMENT_LEFT +; db NPC_MOVEMENT_LEFT db -1 ; end .moveBlue @@ -323,9 +329,20 @@ OaksLabScript9: ; This is where Blue picks up the ball and removes the sprite. ld [wJoyIgnore], a ld a, $1 ldh [hSpriteIndex], a + + ; So when using this new table system, we actually need to add cases for when you have the new starters... + + ld a, [wPlayerStarter] + cp STARTER4 + jr z, .skip + cp STARTER5 + jr z, .skip + ; Since he's just moved down, we just need to skip this process. It's actually harder for him to pick up the regular starters! ld a, SPRITE_FACING_UP ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay +.skip + ld a, $d ldh [hSpriteIndexOrTextID], a call DisplayTextID @@ -361,11 +378,21 @@ OaksLabScript9: ; This is where Blue picks up the ball and removes the sprite. ld [wcf91], a ld [wd11e], a call GetMonName + + ; why does he do this twice why does he do this twice why does he do this twice + ld a, [wPlayerStarter] + cp STARTER4 + jr z, .skip2 + cp STARTER5 + jr z, .skip2 + ld a, $1 ldh [hSpriteIndex], a ld a, SPRITE_FACING_UP ldh [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay + +.skip2 ld a, $e ldh [hSpriteIndexOrTextID], a call DisplayTextID @@ -803,6 +830,7 @@ OaksLab_TextPointers: dw OaksLabText27 dw OaksLabTextPikachu dw OaksLabTextEevee + dw OakLabEmailText OaksLab_TextPointers2: dw OaksLabText1 @@ -1368,3 +1396,15 @@ PikachuEeveeShows: db HS_DAMIEN ; Charmander guy db HS_VERMILION_JENNY ; Squirtle db -1 ; end + +; Moved here to turn into a new bg event +OakLabEmailText: + text_asm + call EnableAutoTextBoxDrawing + ld hl, OakLabEmailTextGet + call PrintText + jp TextScriptEnd + +OakLabEmailTextGet: + text_far _OakLabEmailText + text_end