• 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?".
  • Forum moderator applications are now open! Click here for details.
  • 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

NarutoActor

The rocks cry out to me
1,974
Posts
15
Years
I am having problems with special 0x18b. After I applied it to my test rom, I looked at the changed data, jotted down the table pointer, and saved to rom. I made a script to test it out with [FONT=&quot]0x8004 0x1[/FONT]
[FONT=&quot]0x8005 0x0[/FONT]
[FONT=&quot]0x8006 0x0[/FONT]
It loaded aerodactal just fine, but if I change the pointer it still stays an aerodactal. If I change the var(8004) to any value other that one, the whole image is all screwed up. :/
 

TAKUORO

Pyro from WAH ;D
61
Posts
14
Years
I got a little outdated, If I apply this one to the old one, my progress would still be there or I have to start over?
 

Curt_09

Also known as Chozo
557
Posts
15
Years
Hey guys, is anyone else having problems running Start Map Chooser Advanced with the hacked engine? I used the patch. Is this a problem that only occurs for me, only occurs for the patch, or only occurs for the hacked engine? I'm curious to know if I should have just used the tool, instead of downloading and using the first thing I saw, which was the patch. I applied it, then saw the tool and downloaded it as well. Didn't see any need to use the tool as I'd already applied the patch.
But anyway, yeah, the problem with SMCA. Am I the only one? And if not, what causes it?
This is the error I'm getting:
Spoiler:
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
The problem you're getting is because SMCA reads a value in FR from a script. And, since the patch deletes all scripts from the game, it comes up as an FF byte (which SMCA doesn't know how to interpret). You'll have to edit the starting map/position in hex.
 

Curt_09

Also known as Chozo
557
Posts
15
Years
The problem you're getting is because SMCA reads a value in FR from a script. And, since the patch deletes all scripts from the game, it comes up as an FF byte (which SMCA doesn't know how to interpret). You'll have to edit the starting map/position in hex.

Thank you diegoisawesome. Darthatron explained it to me last night and gave me the offsets so I could go edit it with hex.
Do you know why I couldn't get a level script to work in my start map? I'm assuming it's caused by the same thing.
 

Curt_09

Also known as Chozo
557
Posts
15
Years
You might have forgotten to fix the glitch byte in the level script. Most level scripting tutorials should tell you how to fix this.

I decompiled the map script and fixed the raw word, if that's what you mean. I tried moving the script to a different map, and it worked just fine. Something about the start map is jacked up.
 
5
Posts
14
Years
  • Seen Jun 26, 2014
JPAN can you please make a manual for dummies i dont know how to use the most of this functions.
 
5
Posts
14
Years
  • Seen Jun 26, 2014
if if i aply the v1.1 ips with lunar ips
then i get this when i go outside my house
i patched it with a clean rom
 

vietazn654

A sound soul dwells within me
371
Posts
14
Years
if if i aply the v1.1 ips with lunar ips
then i get this when i go outside my house
i patched it with a clean rom
You're first supposed to use JPAN's Clean Fire Red ROM. Then patch it to this engine. Either than that, it looks like you messed with the warps.
 
5
Posts
14
Years
  • Seen Jun 26, 2014
that doesnt work for me i used the us version from [MESSAGE FROM STAFF: NO LINKING TO ROM SITES]
first i patched with the clean fire red 1.ips
and then with the hacked engine.ips
and i get the same result

please see the next page for a walking script question.
 
Last edited:

vietazn654

A sound soul dwells within me
371
Posts
14
Years
that doesnt work for me i used the us version from 3roms.com
first i patched with the clean fire red 1.ips
and then with the hacked engine.ips
and i get the same result
I know that picture. You need to fix the warps. Go to Pallet Town map and see if they are warps there. If not, add one to the house and make sure the map and bank areas are correct.
 
5
Posts
14
Years
  • Seen Jun 26, 2014
Thanks Vietanz654
that just one problem solved

i'm try to make a script that you get money for each step you do

and i use this code

#org 0x800000
lock
givemoney 0x1 0x0
release
end

setting the walking script pointer to 800000

and i use a signpost to set var 0x407e to 0x1
#org 0x810000
lock
setvar 0x407e 0x1
release
end

and when i activate the signpost and doing the a next step the game freezes.

can someone say what i do wrong?
 
Last edited:

metapod23

Hardened Trainer
673
Posts
15
Years
  • Seen Aug 18, 2016
I was wondering if anyone could better explain special 0x81 (the Load Walking script pointer command) to me and how to execute it properly. I think it might be a solution for making a race occur between a sprite in the game.

My idea is to apply a movement to the sprite of about 10 steps, move it to that permanent location, and then set a variable afterwards. What I want to use special 0x81 for is to check with each movement of the player whether this (or other) variables are set, and if so, to apply another 10-step movement to the sprite.

By not applying a "waitmovement" afterwards, the player should be able to walk about freely as the sprite moves; but shorter movements are necessary, I think, because if you "outrun" or "underrun" the sprite so it can no longer be seen on the map, it reverts back to its primary location on the map, so the race can't continue.

So I'd like try to move the sprite only about ten steps, move it to that position permanently, and then force it to do another brief movement and move its position again, until it gets to the finish line. But to do this without the "waitmovement" command being used, I'd need something like special 0x81 that activates whenever the player is walking (or else litter each tile of the entire map with scripts - ugh). I'm not sure if this would work, but I'd like to give it a try.

Does special 0x81 need to be executed in a header? I tried this, with a script like this:

Code:
special 0x81
compare 0x6173 0x0
if 0x1 goto @go
compare 0x6173 0x1
if 0x1 goto @go2

@go would initiate the first set of movements for the sprite and move it to a new location with "movesprite2"; and @go2 would initiate a second set of movements and move it again. But I am doing something wrong, because no matter what the player is frozen and can't move, even with "waitmovement" commands used.

Is there something else I would need to add to the script, and am I right in using it as a header?

Any advice would be appreciated. :)
 
126
Posts
14
Years
  • Seen Aug 5, 2013
Hi. Could someone please help me with special 0x58, please?
It's the wild pokemon switcher, and I've been trying to get it to work for a couple of hours now...

Here's my XSE script:
#dynamic 0x800000

#org @start
lock
faceplayer
setvar 0x8009 0x08FF
setvar 0x8008 0xFF34
setvar 0x8006 0x1
setvar 0x8005 0x0
special 0x58
release
end


In a Hex Editor, my ROM looks like this at the offset 0x08FFFF00

64 64 96 00 64 64 96 00 64 64 96 00 64 64 96 00
(it repeats this 7 more times)
This is supposed to be my wild pokemon data. (a bunch of lvl 100 Mewtwo's)

When I test it, the wild pokemon that I run into are just "?????????"'s.
I've tried so many different things and nothing is working for me...sometimes Sunflora appears though :/

Thanks!
 

metapod23

Hardened Trainer
673
Posts
15
Years
  • Seen Aug 18, 2016
I was wondering if anyone could better explain special 0x81 (the Load Walking script pointer command) to me and how to execute it properly. I think it might be a solution for making a race occur between a sprite in the game.

My idea is to apply a movement to the sprite of about 10 steps, move it to that permanent location, and then set a variable afterwards. What I want to use special 0x81 for is to check with each movement of the player whether this (or other) variables are set, and if so, to apply another 10-step movement to the sprite.

By not applying a "waitmovement" afterwards, the player should be able to walk about freely as the sprite moves; but shorter movements are necessary, I think, because if you "outrun" or "underrun" the sprite so it can no longer be seen on the map, it reverts back to its primary location on the map, so the race can't continue.

So I'd like try to move the sprite only about ten steps, move it to that position permanently, and then force it to do another brief movement and move its position again, until it gets to the finish line. But to do this without the "waitmovement" command being used, I'd need something like special 0x81 that activates whenever the player is walking (or else litter each tile of the entire map with scripts - ugh). I'm not sure if this would work, but I'd like to give it a try.

Does special 0x81 need to be executed in a header? I tried this, with a script like this:

Code:
special 0x81
compare 0x6173 0x0
if 0x1 goto @go
compare 0x6173 0x1
if 0x1 goto @go2

@go would initiate the first set of movements for the sprite and move it to a new location with "movesprite2"; and @go2 would initiate a second set of movements and move it again. But I am doing something wrong, because no matter what the player is frozen and can't move, even with "waitmovement" commands used.

Is there something else I would need to add to the script, and am I right in using it as a header?

Any advice would be appreciated. :)

I just wanted to say that I figured out who to properly execute this special. For any who might want to know what to do:

First, you have to make the script you want to activate on every step. Once the script is compiled, you open a hex editor and navigate to offset: 0x1a4e2c

There are 4 slots for pointers there. Place the offset (reversed) of the script you want to execute with every step in the first slot. Then, at whatever point you want the walking script to be active (be it through an event script or a level script) just put:

Code:
setvar 0x407e 0x1
special 0x81

Setting variable 407e to 0x1 indicates that you want the game to access the first pointer at offset 0x1a4e2c, and special 0x81 starts the script so that it activates on every step.

So that's how special 0x81 works, in case anyone else was having trouble with the instructions. :)
 

Learath2

Scripter
114
Posts
14
Years
When i patch this engine the pallet town becomes like this
h tt p://img9.imageshack.us/img9/5742/adszxcc.png
can you help me :(
 
Back
Top