• 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
9
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
  • Age 30
  • 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
  • Age 30
  • 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
  • Age 31
  • Seen yesterday
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
10
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,112
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
  • Age 22
  • 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