You are not logged in.
Hmm., I'am forgot how to change badge effect, but to make surf into TM, you must find TM/HM data which include moves data..
Then change HM data field,
[POKÉMON JOURNEY] hacking planning 2012
Visit my website www.pokemonhackingblog.blogspot.com
Making it so that a TM would contain Surf won't change anything, why would it?
In case you want to make it possible to use Surf before receiving the fourth gym badge of Johto, you'll have to modify the asm routine that checks whether that badge is obtained or not (related to being able to use Surf).
Go and download the zip-file I uploaded to "Documents and Edits" thread recently. It should contain the answer you're looking for (not explained well though).
Edit : I dont know anything about ASM yet
It's much simpler than editing the script that gives you the badge.
Here is the routine that checks if you can surf:
CheckSurf: ; c9ea ; checks if you can surf ; returns carry if conditions are met cp $08 jr z, .quit cp $04 jr z, .quit ld a, [$d03e] call $185d cp $01 jr nz, .quit call $49cb jr c, .quit ld de, $001e ; johto badge 4 call $c721 ; CheckFlag jr c, .quit ld d, $39 ; SURF call $4742 ; check party for move jr c, .quit ld hl, $dbf5 bit 1, [hl] jr nz, .quit call $49b8 ld [$d1eb], a call $4706 ld a, $03 ld hl, $4a2c call $261f scf ret .quit xor a ret
Looks complicated at a glance. Fortunately the part we're looking at is pretty simple.
; ca01 ld de, $001e ; johto badge 4 call $c721 ; CheckFlag jr c, .quit
CheckFlag is a function that checks the flag id defined in register de. Flag $1e is the flag that says whether you have the Fog Badge or not. If you don't, the game jumps to this part:
.quit xor a ret
All it does is leave the routine to go back to whatever called it and tells the game you can't surf. Otherwise it checks the rest of the conditions for surfing.
So if you want to surf regardless of what badges you have, all you have to do is erase the part that quits if you don't have it. The badge check is at $ca01 and is 8 bytes long. With z80, $00 counts as a null instruction so you don't have to worry about moving anything around.
Additionally you can surf even if you don't have the move by doing the same thing with the next part:
; ca09 ld d, $39 ; SURF call $4742 ; check party for move jr c, .quit