• 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 places on the 'net to talk Pokémon and more! Community members will not see the bottom screen advertisements.
  • Want to share your adventures playing Pokémon?
    Check out our new Travel Journals forum for sharing playthroughs of ROM Hacks, Fan Games, and other Pokémon content!
  • IMPORTANT: Following a takedown request, the following hacks have been delisted from PokéCommunity:

    • Pokémon Glazed
    • Pokémon: Giratina Strikes Back
    • Pokémon Flora Sky
    • Pokémon Stranded
    The downloads and discussion threads for these hacks will no longer be accessible, and staff will be unable to return questions regarding accessing this content.

Quick Research & Development Thread

5,256
Posts
16
Years

Quick Research & Development Thread

This thread is for small-scale research and development that can be solved in a matter of, say, five or six posts (or less). If you think of something you want to investigate but think it is too minor or shot for an entire Research & Development thread, or discover a small titbit of information that, on its own, would not warrant a whole thread for itself, just post it here!

Posting format

When posting your researched articles, please post them in a format that can be easily understood. Along with posting all your research on the matter in hand, please include any website links, offsets, subsidiary information and the likes when posting your article. Posts that are unclear in their message or that miss out vital information will not be added to the directory, for the sake of convenience and ease of access.

For ease, the links are broken into sections and subsections. A "[Part #]" links to other posts that expand upon or correct the first part.

Thread rules

All posts must follow the posting format above. In addition, posts must follow the rules detailed below. (Of course, please ensure that you follow the PokéCommunity global rules, as well as this subforum's local rules.)

This is not a Simple Question thread.
This is purely for quick research, don't ask your ROM Hacking questions unless they are undocumented enough to warrant research. Simple Questions should be posted as unique threads in the ROM Hacking Help forum.

You should have a minimum amount of knowledge on the matter in hand.
We expect that you'll have knowledge of ROM Hacking and at least a small idea on what to do with what you've found out.

Reviving old topics in the thread is forbidden.
Unless you've found significant research and the case was unresolved in the first time of posting.

Mechanics Research


Scripting Research


Graphics Research


Audio Research


Other


Generation Interlinked

Research here is interlinked with the games of the same Generation, meaning that it can be applied on any of the mentioned ([FR], [EM], etc) ROM's. It is further broken into Generation specific sub-sections.



Extra

knizz's HTML-only BL Finder tool port
HTML-only ROM research tool.

Porting C files to ASM
A way to port C files to ASM.

knizz's online database
An online version of knizz's database.

A Python script for debugging a map
Quick Python script that's useful for debugging a map.

Recreating a bug with PKSV [Part 1] [Part 2] [Part 3]
Simple way too avoid bugs in routines.

Using expanded Pokemon in Advance Map
Recognizing and using expanded Pokémon in Advanced Map 1.92/1.95.
 
Last edited by a moderator:

HackMew

Mewtwo Strikes Back
1,314
Posts
17
Years
  • Seen Oct 26, 2011
Ruby, FireRed or Emerald? A quick, feature-based reference chart to help you choose

The title says it all. If you have any suggestions, or criticism or you spotted some erros, feel free to post. Otherwhise avoid spamming, thanks!
Note: only clean ROMs are taken into account. Also, features available in all games are not included.

[snip]Those pictures weren't meant to be there, I suppose XD[/giradialkia]
 
Last edited by a moderator:
5,256
Posts
16
Years
Also, here are some other fixes you should include:
Battling 2 trainers at once: I'm sure FireRed has that, especially at the Battle Tower in 7 Island
Colored dialogue: I think Ruby has that, although limited, and I also think Emerald has that.
More than one Bike: I think with a little ASM, the hidden Key Items in FR/LG can be made to work with R/S/E standards, although I have no idea how to use it.
Pokérus: I KNOW FR/LG has it, and I think diegoisawesome is right on that call. That definitely needs to be corrected.

By Coloured Dialogue, I think HackMew meant automatic colouring for person events; the numerous bike feature IS RS/E exclusive, as that list is for an unedited ROM, and I agree with you and diegoisawesome with the Pokérus factor.

Still, that is a very helpful post, HackMew.
 

HackMew

Mewtwo Strikes Back
1,314
Posts
17
Years
  • Seen Oct 26, 2011
HackMew, doesn't FireRed have Pokérus? Maybe you mean random Pokérus (in which case I wouldn't know) but as a feature it does.

Nope, it doesn't. It does support Pokérus as status, for compatibility. But you won't be able to infect other Pokémon and the virus will never wear off either.
You can't even get the Pokérus unless you trade/cheat. At least, that's what I read on Bulbapedia.


Also, here are some other fixes you should include:
Battling 2 trainers at once: I'm sure FireRed has that, especially at the Battle Tower in 7 Island
Colored dialogue: I think Ruby has that, although limited, and I also think Emerald has that.
More than one Bike: I think with a little ASM, the hidden Key Items in FR/LG can be made to work with R/S/E standards, although I have no idea how to use it.
Pokérus: I KNOW FR/LG has it, and I think diegoisawesome is right on that call. That definitely needs to be corrected.

Are you sure on the Battle Tower? Mind checking again, just in case?
Also, for colored dialogue I meant, like The Master said, the automatic, gender-based coloring.
If you look at the original games, you'll see R/S/E messages are plain black.
 

Gamer2020

Accept no Imitations!
1,062
Posts
15
Years
I can see why there's no support for Pokerus: No RTC. It wears off at midnight, but there isn't a RTC.

I grabbed my LeafGreen (same as Firered...) Yup. At the battle tower, there are 4 modes:
Single
Double
Knockout
Mixed

On double, the trainers will face you- 2-on-2 matches (Double battles) until you complete the challenge or loose. Also, right before Pattern Bush, there are twins Miu and Mia that both send out Pikachu.

OK. I guess I was wrong for text coloring in R/S. I beat Ruby ages ago (360+ hours...) so I kinda forgot...
And sorry for a month-long response...

It is not the same as emerald though. That is just a normal double battle.
In Emerald if 2 trainers happen to both see you at the same time they will both battle you at once.
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
I think "Improved Graphics" is an opinion, not an actual fact.

Quite frankly, I think the FR/LG graphics are horrible.

EDIT: Okay, they aren't horrible, they look fine to be honest, but I still think that "Improved Graphics" is just an opinion.
 
Last edited:

HackMew

Mewtwo Strikes Back
1,314
Posts
17
Years
  • Seen Oct 26, 2011
I think "Improved Graphics" is an opinion, not an actual fact.

Quite frankly, I think the FR/LG graphics are horrible.

Well, that's meant as graphics engine. Maybe I'll reword it a little.
 

mindfreak

Belgium Rom hacker
45
Posts
16
Years
  • Seen Nov 1, 2012
You can find the offsets for each maps pokemon in Advance map.
Go to the wild pokemon tab and click on expand.
There you ll' find the offset.

its stored...

YY Min Lv
XX Max LV
FFFF Pokemon hex number
 

kittopian

Source engine coder
11
Posts
14
Years
Well... I am researching "glitch moves" In the hope of creating more attacks... I would like to know where the move data table is so I may try to expand it because the "glitch move" data is really existing rom data, and if this is actualy acheivable Any way... hopefully I will be able to 'create' new moves. E.G. for 4th gen pokemon, ect.

My knowledge so far: Move data can be interpreted from other data.

P.S I do not truly know if this thread was where to put this...
 
Last edited:

Shiny Quagsire

I'm Still Alive, Elsewhere
697
Posts
14
Years
I'm using JPAN's hacked engine, and I was wondering how I could turn his random water battle, to use the tree data? Here is the code he made:
Code:
.align 2
.thumb


/*Special 0x98 will start a random water battle, such as those in the sea.
Sister to the previous function, will start a water battle anywhere there is 
a water pokemon data.*/

Special_98: push {r4-r7, lr}
	    mov r7, r8
	    push {r7}
	    sub SP, SP, #0x8
	    ldr r0, water_data
	    lsl r4, r0, #0x18
	    lsr r4, r4, #0x18
	    ldr r1, wild_generator2
	    bx r1
.hword 0x0000
water_data: .word 0x22000410 /*the lake tile data*/
wild_generator2: .word 0x0806cbe5
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
I'm using JPAN's hacked engine, and I was wondering how I could turn his random water battle, to use the tree data? Here is the code he made:
Code:
.align 2
.thumb


/*Special 0x98 will start a random water battle, such as those in the sea.
Sister to the previous function, will start a water battle anywhere there is 
a water pokemon data.*/

Special_98: push {r4-r7, lr}
        mov r7, r8
        push {r7}
        sub SP, SP, #0x8
        ldr r0, water_data
        lsl r4, r0, #0x18
        lsr r4, r4, #0x18
        ldr r1, wild_generator2
        bx r1
.hword 0x0000
water_data: .word 0x22000410 /*the lake tile data*/
wild_generator2: .word 0x0806cbe5
Actually, you don't need to do that. there's already a built-in special for that, although I don't know what it is.
If you find it, please tell me, and I'll try to get it into my scripting tutorial.
 

Shiny Quagsire

I'm Still Alive, Elsewhere
697
Posts
14
Years
I believe it's special AB, which is unknown in XSE's guide. Here'd the code for rock smash:
Code:
'---------------
#org 0x1BE00C
special 0x187
compare LASTRESULT 0x2
if 0x1 goto 0x81A7AE0
lockall
checkflag 0x825
if 0x0 goto 0x81BE091
checkattack 0xF9
compare LASTRESULT 0x6
if 0x1 goto 0x81BE091
setanimation 0x0 LASTRESULT
bufferpartypokemon 0x0 LASTRESULT
bufferattack 0x1 0xF9
msgbox 0x81BE09D MSG_YESNO '"This rock appears to be breakable...."
compare LASTRESULT 0x0
if 0x1 goto 0x81BE09A
msgbox 0x81BDFD7 MSG_KEEPOPEN '"[buffer1] used [buffer2]!"
closeonkeypress
doanimation 0x25
waitstate
goto 0x81BE06F

'---------------
#org 0x1A7AE0
release
end

'---------------
#org 0x1BE091
msgbox 0x81BE0E2 MSG_SIGN '"It's a rugged rock, but a POKéMON\..."
end

'---------------
#org 0x1BE09A
closeonkeypress
releaseall
end

'---------------
#org 0x1BE06F
applymovement LASTTALKED 0x81BE08F
waitmovement 0x0
hidesprite LASTTALKED
[S-HIGHLIGHT]special 0xAB[/S-HIGHLIGHT]
compare LASTRESULT 0x0
if 0x1 goto 0x81BE08D
waitstate
releaseall
end

'---------------
#org 0x1BE08D
releaseall
end


'---------
' Strings
'---------
#org 0x1BE09D
= This rock appears to be breakable.\nWould you like to use ROCK SMASH?

#org 0x1BDFD7
= [buffer1] used [buffer2]!

#org 0x1BE0E2
= It's a rugged rock, but a POKéMON\nmay be able to smash it.


'-----------
' Movements
'-----------
#org 0x1BE08F
#raw 0x68 'mov68
#raw 0xFE 'End of Movements
 

Sierraffinity

Desperately trying to retire from ROM hacking
1,069
Posts
16
Years
I believe it's special AB, which is unknown in XSE's guide. Here'd the code for rock smash:
Code:
'---------------
#org 0x1BE00C
special 0x187
compare LASTRESULT 0x2
if 0x1 goto 0x81A7AE0
lockall
checkflag 0x825
if 0x0 goto 0x81BE091
checkattack 0xF9
compare LASTRESULT 0x6
if 0x1 goto 0x81BE091
setanimation 0x0 LASTRESULT
bufferpartypokemon 0x0 LASTRESULT
bufferattack 0x1 0xF9
msgbox 0x81BE09D MSG_YESNO '"This rock appears to be breakable...."
compare LASTRESULT 0x0
if 0x1 goto 0x81BE09A
msgbox 0x81BDFD7 MSG_KEEPOPEN '"[buffer1] used [buffer2]!"
closeonkeypress
doanimation 0x25
waitstate
goto 0x81BE06F

'---------------
#org 0x1A7AE0
release
end

'---------------
#org 0x1BE091
msgbox 0x81BE0E2 MSG_SIGN '"It's a rugged rock, but a POKéMON\..."
end

'---------------
#org 0x1BE09A
closeonkeypress
releaseall
end

'---------------
#org 0x1BE06F
applymovement LASTTALKED 0x81BE08F
waitmovement 0x0
hidesprite LASTTALKED
[S-HIGHLIGHT]special 0xAB[/S-HIGHLIGHT]
compare LASTRESULT 0x0
if 0x1 goto 0x81BE08D
waitstate
releaseall
end

'---------------
#org 0x1BE08D
releaseall
end


'---------
' Strings
'---------
#org 0x1BE09D
= This rock appears to be breakable.\nWould you like to use ROCK SMASH?

#org 0x1BDFD7
= [buffer1] used [buffer2]!

#org 0x1BE0E2
= It's a rugged rock, but a POKéMON\nmay be able to smash it.


'-----------
' Movements
'-----------
#org 0x1BE08F
#raw 0x68 'mov68
#raw 0xFE 'End of Movements
I think that's it! Try it out in a script and see what you get.
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
I found out how to edit the Battle Tower opponent Pokemon in Pokemon Ruby. The data is located at 0x4038E0.

I posted a whole thread about it, but just in case it doesn't get approved, I wanted to mention the offset anyway, because hopefully some hacker more advanced than me can find out where the pointer is.

I don't want to explain in detail the data, but at 0x4038E0, change 19 into 18, and congratulations, most Pikachu will now turn into Arboks in the Battle Tower.
 

knizz

192
Posts
16
Years
  • Seen Oct 28, 2020
I found this in the US-FR-Rom:
Spoiler:

What is this [ ??? ]-instruction doing there?
 
Last edited:

prime-dialga

pure darkness
28
Posts
14
Years
  • Seen Jul 8, 2014
Some hwords have no opcode in Thumb.
If you try to decompile one of this hwords the output is [???].

Maybe it is a grafik or an ARM code.
 
Back
Top