• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Development: Pokémon Fire Red Hacked Engine

BluRose

blu rass
811
Posts
10
Years
  • Well, but it's possible to apply the changes, then change the offsets/pointers to your own (looking the differences in HxD), and restore the scripts from a backup. Am I wrong?
    um
    you can't restore the differences of anything before 71AD40
    i mean go for it but all you're doing is overwriting what jpan himself did
     
    352
    Posts
    7
    Years
    • Seen Mar 10, 2022
    um
    you can't restore the differences of anything before 71AD40
    i mean go for it but all you're doing is overwriting what jpan himself did

    I'm not talking about overwriting, I'm talking about of repointing what he did to fit in my hack, but I will try it myself. ^^

    EDIT: As I said, it worked and now I'm using the behavior hack and some other features without the whole hacked engine. ^^
     
    Last edited:
    352
    Posts
    7
    Years
    • Seen Mar 10, 2022
    There is a way to make the Shiny Battle special work with specific trainer pkmn? (Example: The trainer have Bulbasaur/Charmander/Squirtle, then I want to make only Charmander Shiny.)

    Also, there is a way to make this same special compatible with givepokemon?
     

    ASDBUDDY

    The Derp
    347
    Posts
    7
    Years
  • I used the hacked engine an its pretty cool BUT i used a script containing givepokemon command and whenever while playing i come to the point where the player receives his/her starter the givepokemon command crashes the emulator thus restarting the game
     

    AkameTheBulbasaur

    Akame Marukawa of Iyotono
    409
    Posts
    10
    Years
  • I used the hacked engine an its pretty cool BUT i used a script containing givepokemon command and whenever while playing i come to the point where the player receives his/her starter the givepokemon command crashes the emulator thus restarting the game

    Did you use the patch or the tool? (If the tool, which hacks did you apply?)

    Also how do you know it was the "givepokemon" command?
     

    ASDBUDDY

    The Derp
    347
    Posts
    7
    Years
  • Did you use the patch or the tool? (If the tool, which hacks did you apply?)

    Also how do you know it was the "givepokemon" command?

    umm i used the patch(didn't know there was tool lol) and ik it was the givepokemon command as i tried 3 diff scripts and in all the three when the npc gives you the pokemon thats when it crashed

    but don't worry the problem was i had too many rom bases in that hack i tried afresh and now its working :)
     

    AkameTheBulbasaur

    Akame Marukawa of Iyotono
    409
    Posts
    10
    Years
  • umm i used the patch(didn't know there was tool lol) and ik it was the givepokemon command as i tried 3 diff scripts and in all the three when the npc gives you the pokemon thats when it crashed

    but don't worry the problem was i had too many rom bases in that hack i tried afresh and now its working :)

    Okay good I'm glad you figured it out. It was probably that the ROM bases conflicted. Are you still using the patch as there are some known issues with it, but they have fixes here.
     

    Urz

    9
    Posts
    14
    Years
    • Seen Oct 8, 2022
    Has anyone managed to get the Wild Pok?mon data switch for the fishing data working? I've tried everything from using loadpointer, variable and even writing directly to the fishing wild data ram shown in the RAM map in his documentation. nothing works. I've got the other 3 data stores to work. Just the fishing one doesn't seem to work. I'm starting to believe it's bugged.

    If anyone has cracked this please let me know.
     
    Last edited:
    239
    Posts
    8
    Years
    • Seen Apr 15, 2024
    After applying the backsprite switch fix from here, I got a bug that caused the player's backsprite to inherit the default hero palette on every frame after the first.

    EDIT:
    I'm not sure if anyone else has had that issue, but I found a way to fix it by modifying the assembly routine JPAN had written:

    I've tested with a few different backsprites and it appears to work as desired.

    Code:
    .text
    .align 2
    .thumb
    .thumb_func
    /*
    
    replace pointer(+1) at 7630 to this routine
    */
    new_rot_start:	
    	lsl r1, r4, #0x1
    	add r1, r1, r4
    	lsl r1, r1, #0x2
    	add r2, r1, r6
    	ldr r0, [r2]
    	push {r2-r5}
    	mov r2, #0x80
    	ldr r1, .first_male_back
    	lsl r2, r2, #0x4
    	mov r4, #0x0
    
    compare_loop:
    	cmp r0, r1
    	beq other_tag
    	add r1, r1, r2
    	add r4, #0x1
    	cmp r4, #0x1A
    	blt compare_loop
    	
    print_picture:	
    	pop {r2-r5}
    	lsl r1, r4, #0x1
    	add r1, r1, r4
    	lsl r1, r1, #0x2
    	add r1, r1, r7
    	ldr r1, [r1]
    	ldrh r2, [r2, #8]
    	lsr r2, r2, #0x1
    	swi #0xb
    	ldr r1, .return_addr
    	bx r1
    	
    .hword 0x0000
    .first_male_back: .word 0x08E69EBC
    .return_addr:	.word 0x08007641
    
    
    other_tag:	
    	cmp r4, #0xA
    	blt FR_hero
    	sub r4, #0xA
    		
    change_picture:	
    	cmp r4, #0x4		
    	blt all_maned
    	sub r4, #0x4
    	b change_picture
    		
    FR_hero:
    	cmp r4, #0x5		
    	blt all_maned
    	sub r4, #0x5
    	b FR_hero
    		
    all_maned:	
    	mov r5, r0
    	ldr r0, .var_4062
    	bl call_var_load
    	cmp r0, #0x0
    	beq print_old_picture
    	ldr r1, .table_addr
    	lsl r3 ,r0, #0x5
    	lsl r0, r0, #0x3
    	add r0, r0, r3
    	lsl r5, r4, #0x3	@r5 = frame number
    	add r4, r1, r5	
    	add r4, r0, r4
    	ldr r3, [r4]
    	cmp r3, #0x0
    	beq print_old_picture
    	ldr r0, [r4, #0x4]
    	ldr r1, .first_pallette_slot
    	mov r2, #0x10
    	swi 0xb
    	mov r4, #0xc0
    	add r1, r1, r4
    	swi 0xb
    	ldr r1, .pallete_dump
    	cmp r5, #0x0			@first frame
    	bne Other
    	swi 0xB					@player first frame as normal
    	add r1, r1, r4
    	mov r8, r8				@trainer pal fix
    	b Continue
    
    Other:
    	mov r8, r8				@player pal fix
    	add r1, r1, r4
    	swi 0xB
    	
    Continue:
    	mov r0, r3
    	b print_picture
    	
    print_old_picture:	
    	add r0, r5, #0x0
    	b print_picture
    
    call_var_load:	
    		ldr r1, .var_load
    		bx r1
    		
    .var_load:	.word 0x0806E569
    .var_4062: 	.word 0x00004062		
    .table_addr:	.word 0x081ab1d8
    .first_pallette_slot:	.word 0x05000200
    .pallete_dump: .word 0x020377f8
     
    Last edited:
    22
    Posts
    11
    Years
    • Seen May 12, 2021
    Is there anywhy use this on other langs of firered version 1.0 is it possible modify the patch file to set the right pointers on other langs?
     
    760
    Posts
    15
    Years
    • Seen yesterday
    Why the HELL would you make such a great resource and then ruin it by making it come with the con of deleting every damn script in the game? Seriously...please explain to me how this makes even the slightest bit of fricken sense. It's like you didn't put a single thought into this.

    Use the Tool instead of the patch?
     

    DrFuji

    [I]Heiki Hecchara‌‌[/I]
    1,691
    Posts
    14
    Years
  • Why the HELL would you make such a great resource and then ruin it by making it come with the con of deleting every damn script in the game? Seriously...please explain to me how this makes even the slightest bit of fricken sense. It's like you didn't put a single thought into this.

    From my point of view, that makes it better as it frees up space by clearing scripts that I was never going to use. People are suppossed to use this to build things from scratch, not retread Kanto.

    That being said, if you really want to use JPAN's engine and keep all of the in-game scripts, download the hack tool applier in the first post. It will also allow you to choose as many or as little of the features you want.
     

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • After applying the backsprite switch fix from here, I got a bug that caused the player's backsprite to inherit the default hero palette on every frame after the first.

    EDIT:
    I'm not sure if anyone else has had that issue, but I found a way to fix it by modifying the assembly routine JPAN had written:

    I've tested with a few different backsprites and it appears to work as desired.

    Code:
    .text
    .align 2
    .thumb
    .thumb_func
    
    new_rot_start:	
    	lsl r1, r4, #0x1
    	add r1, r1, r4
    	lsl r1, r1, #0x2
    	add r2, r1, r6
    	ldr r0, [r2]
    	push {r2-r5}
    	mov r2, #0x80
    	ldr r1, .first_male_back
    	lsl r2, r2, #0x4
    	mov r4, #0x0
    
    compare_loop:
    	cmp r0, r1
    	beq other_tag
    	add r1, r1, r2
    	add r4, #0x1
    	cmp r4, #0x1A
    	blt compare_loop
    	
    print_picture:	
    	pop {r2-r5}
    	lsl r1, r4, #0x1
    	add r1, r1, r4
    	lsl r1, r1, #0x2
    	add r1, r1, r7
    	ldr r1, [r1]
    	ldrh r2, [r2, #8]
    	lsr r2, r2, #0x1
    	swi #0xb
    	ldr r1, .return_addr
    	bx r1
    	
    .hword 0x0000
    .first_male_back: .word 0x08E69EBC
    .return_addr:	.word 0x08007641
    
    
    other_tag:	
    	cmp r4, #0xA
    	blt FR_hero
    	sub r4, #0xA
    		
    change_picture:	
    	cmp r4, #0x4		
    	blt all_maned
    	sub r4, #0x4
    	b change_picture
    		
    FR_hero:
    	cmp r4, #0x5		
    	blt all_maned
    	sub r4, #0x5
    	b FR_hero
    		
    all_maned:	
    	mov r5, r0
    	ldr r0, .var_4062
    	bl call_var_load
    	cmp r0, #0x0
    	beq print_old_picture
    	ldr r1, .table_addr
    	lsl r3 ,r0, #0x5
    	lsl r0, r0, #0x3
    	add r0, r0, r3
    	lsl r5, r4, #0x3	@r5 = frame number
    	add r4, r1, r5	
    	add r4, r0, r4
    	ldr r3, [r4]
    	cmp r3, #0x0
    	beq print_old_picture
    	ldr r0, [r4, #0x4]
    	ldr r1, .first_pallette_slot
    	mov r2, #0x10
    	swi 0xb
    	mov r4, #0xc0
    	add r1, r1, r4
    	swi 0xb
    	ldr r1, .pallete_dump
    	cmp r5, #0x0			@first frame
    	bne Other
    	swi 0xB					@player first frame as normal
    	add r1, r1, r4
    	mov r8, r8				@trainer pal fix
    	b Continue
    
    Other:
    	mov r8, r8				@player pal fix
    	add r1, r1, r4
    	swi 0xB
    	
    Continue:
    	mov r0, r3
    	b print_picture
    	
    print_old_picture:	
    	add r0, r5, #0x0
    	b print_picture
    
    call_var_load:	
    		ldr r1, .var_load
    		bx r1
    		
    .var_load:	.word 0x0806E569
    .var_4062: 	.word 0x00004062		
    .table_addr:	.word 0x081ab1d8
    .first_pallette_slot:	.word 0x05000200
    .pallete_dump: .word 0x020377f8

    How would one go about using this?
    Is it just a matter of compiling, inserting it in the ROM and the Var 0x4062 will do the rest or...?
     
    222
    Posts
    6
    Years
    • Seen Nov 18, 2023
    For anyone wondering, you should NOT apply this to a Clean Fire Red Rom, but instead, use JPAN's Clearing Patch, that clears out all of the scripts, signposts, and sprites in every map. Otherwise, some bugs may occur. You can find it in the OLD rom hacking thread, for those who can't find it anymore, here is a link.

    http://www.pokecommunity.com/showpost.php?p=5005730&postcount=252
    (That is his post.)

    dead link? can't download it.

    Edit: NVM, You don't even need it for the ips.

    I can't download the v1.0 it is saying that it is no longer available

    v1.0 doesn't mean for FireRed 1.0, it's just v1.0 of his tool/ips. You're better off downloading v1.1 because of bug fixes, but it is still applied to FireRed 1.0.
     
    Last edited by a moderator:
    Back
    Top