You are not logged in.
Trying to change the surf sprite in Pokemon Crystal to always use the blue palette. Tired of seeing the red Lapras when playing as a male character. But I'm having trouble locating any type of script that dictates what color the surf sprite is. The surf sprite palette might be based on the palette of the character, in which case, would any know how to change the male sprite to use a blue palette while surfing?
You'd just want to track down the code that makes you start surfing and have it overwrite the player's palette ID as well with the Blue one. Then find the routine that changes you back, and make it restore the proper palette ID so you don't stay blue. Ironically, I've only done this in Gold (you're blue while surfing in Pokemon Christmas), haven't looked up the equivalent functions for Crystal yet to be able to tell you more specifically.
I believe this is the code I should be looking at, correct? Where cp PLAYER_SURF is loading the surf sprite and PLAYER_SURF_PIKA is the Pikachu surf sprite but I don't need to worry about that.
Functionc922: ; c922 (3:4922) ld de, ENGINE_FOGBADGE call CheckBadge jr c, .asm_c956 ld hl, BikeFlags bit 1, [hl] ; always on bike jr nz, .asm_c95c ld a, [PlayerState] cp PLAYER_SURF jr z, .asm_c959 cp PLAYER_SURF_PIKA jr z, .asm_c959 call GetFacingTileCoord call GetTileCollision cp $1 jr nz, .asm_c95c call CheckDirection jr c, .asm_c95c callba CheckFacingObject jr c, .asm_c95c ld a, $1 ret
I also just stumbled upon this, which I assume is important for changing the sprite back. So I'd just need a script to see if the character is set to male and then run the script to palette swap? Then run a similar script when returning to land?
WaterToLandSprite: ; 803f9 push bc ld a, PLAYER_NORMAL ld [PlayerState], a call Functione4a ; UpdateSprites pop bc ret
And finally I found this. Some script and function about player palettes. Functionc225 is also used in reference to Kris's palette for trading in the pokemon center trade/battle colosseum. Unfortunately I don't exactly know what the function does or what the numbers in the script stand for.
SetPlayerPal: ld a, [ScriptVar] ; 1 - 8 add $7 ; 8 - 15 ld [wPlayerPalette], a swap a ; parameter for Functionc225 ld [ScriptVar], a ret callasm SetPlayerPal special Functionc225
Last edited by rbroab (2018-07-17 18:35:43)
What I did in Gold was to hijack this script's equivalent and add a line that would be... (I think)
loadvar wPlayerPalette, 1
(since 1 is the blue OW palette). And then you'd need to set it back to Red (palette 0) when you get off surf (but check the gender first, since you don't want Kris turning Red if you're the girl). Once I'm free in a bit I'll look around harder and try this out anyway, since I want to add it to my pokecrystal hack anyway, and just hadn't gotten around to looking this stuff back up.
Last edited by Mateo (2018-07-17 18:56:12)
If you take a look, let me know what you come up with. I can't find the script that sets the gender or if there are any calls back to that.
Yeah it's definitely outdated. I'm actually using the twitch plays pokemon anniversary crystal rom base. Something about starting in Kanto then ending up in Johto, story edits, added trainers, new dungeons and features was extremely appealing. I had just been making edits for personal use. Finally hit a wall and that's when I had discovered this whole community. But at that point I was thousands of edits in. No way I could simply port all of that into an updated version of pokecrystal. Most of the time I have to work backwards, and not much is labeled so I'm stuck using other bits around the script for context. It's been a pain.