Advertiser Content

Quick Research & Development Thread Page 12

Started by Spherical Ice January 9th, 2010 2:23 AM
  • 441114 views
  • 1131 replies

tajaros

Hi I'm dawg

Age 20
Male
Philippines
Seen August 7th, 2015
Posted April 15th, 2013
857 posts
7.4 Years
Uh... Could you just copy the thing written on your link and paste it here cause that site isn't available in my country?
Here..

Naming the Rival from the Overworld:
Spoiler:
The Code:
.text
.align 2
.thumb
.thumb_func
.global rivalnamingingame
main:
push {r0-r4,lr}
ldr r0, place
str r0, [sp, #0x4]
ldr r1, ramlocation
ldr r1, [r1, #0x0]
ldr r0, standard
add r1, r1, r0
mov r0, #0x4
mov r2, #0x0
mov r3, #0x0
bl place2
ldr r1, ramlocation
ldr r1, [r1, #0x0]
ldr r0, standard
add r1, r1, r0
ldrb r0, [r1, #0x0]
cmp r0, #0xFF
beq failsafe
cmp r0, #0x0
beq failsafe
return: pop {r0-r4}
pop {pc}
place2: ldr r4, actualroutine
bx r4
failsafe: ldr r0, rivalname
loop: ldrb r2, [r0, #0x0]
strb r2, [r1, #0x0]
cmp r2, #0xFF
beq return
add r0, #0x1
add r1, #0x1
b loop
.align
place: .word 0x080568E1
ramlocation: .word 0x03005008
standard: .word 0x00003A4C
actualroutine: .word 0x0809D955
rivalname: .word 0x08FFFFFF
Where to insert: Anywhere! This routine is called from a script in the game, and as such, doesn't need to be carefully linked into existing routines. All you need to do is remember the rule of THUMB, add 1 to the offset when calling it!

Explanation: It's what it says on the tin, it lets you name your rival from the in game overworld, allowing for Silver like naming, or indeed, any other possibility you can come up with. The rivalname: .word 0x08FFFFFF is for if the player leaves the name box blank. It will fill it with a standard name instead. This standard name is up to you to create. Simply compile a name with XSE, and point that pointer to it.

You also need to put this routine in the game, or else it won't be able to load past the intro without naming the rival. All it does is temporarily write a holding name to the rival buffer so that the game doesn't crash.

.text
.align 2
.thumb
.thumb_func
.global rivalnamingskip
main:
ldr r1, [r6, #0x0]
ldr r0, number
mov r8, r0
add r1, r8
push {r1}
ldr r0, rivalname
loop: ldrb r2, [r0, #0x0]
cmp r2, #0xFF
beq end
strb r2, [r1, #0x0]
add r0, #0x1
add r1, #0x1
b loop
end: strb r2, [r1, #0x0]
pop {r1}
mov r0, sp
ldr r3, return
bx r3
.align
number: .word 0x00003A4C
rivalname: .word 0x08FFFFFF
return: .word 0x08054A75
Where to insert: Navigate to 0x54A6A, and change the following bytes to this:
01 49 08 47 00 00 XX XX XX 08.
Where the XX's stand for the pointer to the new routine plus 1.

Explanation: It simply writes a placeholder name into the [rival] buffer so the game doesn't crash. Obviously, you shouldn't be using the [rival] buffer until the player has named the rival, so it shouldn't be a problem.

To make this work, navigate to 0x103690, and change the pointer there to 0x1307D1.

wwmb

Watcher

Male
Seen January 18th, 2016
Posted February 16th, 2013
20 posts
9.4 Years
Okay, I know this isn't exactly what this thread is for, but whatever.

What I've been working on for the past few hours is a rewrite of the stone evolution checking routine. It, essentially, makes it much easier to add custom (stone) evolution methods. If this is unclear, essentially you could write a code to check just for gender (or really, whatever you wanted), put it somewhere, and put that pointer into a table, and it would allow you to evolve using a particular stone on a particular gender of Pokemon. It uses the evolution types above 'F' (as in, all the unused ones).

Right now, I'm doing stone evolutions, though I plan to work on doing the same for levelup and trade evolutions eventually.

What I was wondering, though, is - would it even be worth it to even release it once I finish working out the bugs? Sure, it makes it easier to implement custom evolution methods, but you still need to know ASM to even use it, and, so, the only people that would be able to even use it could do the exact same thing.
I think that you should. And just because someone can do something... doesn't mean they would want to go through all the work of designing such a system, ironing out bugs, building it and so on.

Shiny Quagsire

I'm Still Alive, Elsewhere

Age 21
Male
Hoenn Safari Zone
Seen March 10th, 2018
Posted April 17th, 2017
700 posts
10.4 Years
To make this work, navigate to 0x103690, and change the pointer there to 0x1307D1.
Actually, you wrote that down wrong. it's 0x130690, not 0x103690.

tajaros

Hi I'm dawg

Age 20
Male
Philippines
Seen August 7th, 2015
Posted April 15th, 2013
857 posts
7.4 Years
Actually, you wrote that down wrong. it's 0x130690, not 0x103690.
It's like that in Jambo's post so I'm not sure if that is the pointer.

wwmb

Watcher

Male
Seen January 18th, 2016
Posted February 16th, 2013
20 posts
9.4 Years
POKEMON EMERALD
I found something kind of wacky when I was messing with strings:

//---------------
#org @start
msgbox @msg 0x2
end

//---------
// Strings
//---------
#org @msg
= \hF9

This seems to:
Repeat last speech from last triggered script/person
It is also, always, missing the first 2 characters of the repeated text. (ie, talking to the person who says "PROF. BIRCH spends days in his LAB [blablabla]" will repeat "OF. BIRCH spends days in his LAB [blablabla]")


Probably useless. but still funny.

FBI

Free supporter

Male
Unknown Island
Seen 1 Day Ago
Posted March 30th, 2019
1,905 posts
6.7 Years
So, last night, I worked out how type effectiveness is done in FireRed. You'll be pleased to know that it's relatively simple. Firstly, the method of storage:

[Attack type - 1 byte][Target Type - 1 Byte][Effectiveness value - 1 Byte]
This data is stored at 0x24F050.

There are several of these, kept in an array which ends with a 0xFE value. The game loops over each entry in the array, checking if the attack type matches the used attack's type, and if it does, then checks the Target Type against the 2 types of the targeted Pokémon.

If either type matches, it loads the effectiveness byte and branches off to another routine which takes care of physically making the attack super effective/not effective. The type effectiveness values are as follows:

Note, these are in hex
00 - Has No effect (Eg, Ghost on Normal)
05 - 50% effectiveness
14 - 200% Effectiveness
I don't know why they used these values, but that's what they are nonetheless. What you may gleam from these values, however, is that, unless explicitly told otherwise, the game treats all moves as normal effectiveness on any type.

If neither type matches, it jumps to the loop counter, increments it and continues checking until it hits that magical 0xFE value.

However, the way it is implemented leaves something to be desired as it is very slow (looping over several entries), and taking up more space than needed, both in terms of code and data. It's obviously wasteful in so far as it continues to check even after having already found both effectiveness values, as well as the wasteful nature of the loop in and of itself.
Related thread:
http://www.pokecommunity.com/showthread.php?t=83674
...
Male
Seen August 19th, 2018
Posted August 19th, 2018
1,312 posts
12.4 Years
Here are some offsets for the Pokedex HUD:
0x451F55 = X position of text list
0x451F56 = Y position of text list
0x451F5D = X position of Habitat picture
0x451F5E = Y position of Habitat picture
0x451F65 = X position of "Seen:__ Owned:__" box
0x451F66 = Y position of "Seen:__ Owned:__" box
0x451F61 = BG Palette number that habitat picture uses
0x4520C8 = # of list entries on main pokedex page (National Pokedex enabled only)

Mess around with the bytes at those offsets, allowing you to do stuff like this:

karatekid552

What happens if I push it?....

Male
Do you really want to know? Really?
Seen January 12th, 2015
Posted December 14th, 2014
1,766 posts
6.9 Years
Just some research on high #flags.

I have always used flags in the 1000's for my hacking, until tajaros showed me this post: http://www.pokecommunity.com/showthread.php?p=6829256#post6829256

In it, it states that flags above 900 overwrite variables from 4000 up. I have never had a problem with flags in the 1000's so I did some investigating.

I wrote a script that would set all of the flags from 900 to 11FF and then did some variable comparing. I checked variables 4000 to 4380 (the var that flag 1000 should affect, if this was true, since flags are 1 byte while vars are 2) and I found that only vars 4000-408F were affected. Nothing higher. I even checked a few variables like 5000, 4400, and 4500, all to receive that same result. None higher than 408F were affected.

This brings me to my question. Why? I know that flags 900 to A22 are completely off limits by the above research, but what about the rest? Where are they stored? Either vars 4090+ are stored in a non-DMA location or the flags above A22 aren't stored with the rest. Does anyone know anything about these high number flags?

Paired with Simba

Jambo51

Glory To Arstotzka

Male
Seen January 28th, 2018
Posted December 6th, 2015
732 posts
10.3 Years
Flags are 8 per byte, not 1 per byte. So checking flags 0x900 - 0x11FF would only actually affect vars 0x4000 to 0x4090.

None of the flags are safe to use, it's really that simple. Neither are the variables. If you want to make them safe, that's a whole other kettle of fish.
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!

karatekid552

What happens if I push it?....

Male
Do you really want to know? Really?
Seen January 12th, 2015
Posted December 14th, 2014
1,766 posts
6.9 Years
Flags are 8 per byte, not 1 per byte. So checking flags 0x900 - 0x11FF would only actually affect vars 0x4000 to 0x4090.

None of the flags are safe to use, it's really that simple. Neither are the variables. If you want to make them safe, that's a whole other kettle of fish.
Oh, they are stored in bits. Wow, I didn't even think of that. Thanks. It makes a ton more sense now.

Edit: I just came up with this in case someone finds themselves in need of more flags:
With it, you can choose which var you would not like to use and have 16 flags at your disposal.

(((Flag - 900)/8)/2)+4000= var number flag is stored in.

(I am not responsible for any bad eggs and such, check the var you want to use first:p)

You can solve for flag or var, just depends on which you want.

Paired with Simba
Female
Seen October 4th, 2018
Posted January 24th, 2015
192 posts
12.1 Years
For FireRed:
If you want to skip the intro: [0x080EC5D0]=0x08078915.
If you want to skip the intro+titlescreen: [0x080EC5D0]=0x0800C301.
If you want to skip the tutorial+oak:
  • [0x0800C4C4]=0x08056645
  • [0x08054A68]=0x4C3C
  • [0x08054A6A]=0x6820
  • [0x08054A6C]=0x4900
  • [0x08054A6E]=0xE001
  • [0x08054A70]=name of the player
    Spoiler:

    081C5758 : GREEN
    081C575E : RED
    081C5762 : LEAF
    081C5767 : FIRE
    081C576C : GARY
    081C5771 : KAZ
    081C5775 : TORU
    081C577A : ASH
    081C577E : KENE
    081C5783 : GEKI
    081C5788 : JAK
    081C578C : JANNE
    081C5792 : JONN
    081C5797 : KAMON
    081C579D : KARL
    081C57A2 : TAYLOR
    081C57A9 : OSCAR
    081C57AF : HIRO
    081C57B4 : MAX
    081C57B8 : JON
    081C57BC : RALPH
    081C57C2 : KAY
    081C57C6 : TOSH
    081C57CB : ROAK
    081C57D0 : OMI
    081C57D4 : JODI
    081C57D9 : AMANDA
    081C57E0 : HILLARY
    081C57E8 : MAKEY
    081C57EE : MICHI
    081C57F4 : PAULA
    081C57FA : JUNE
    081C57FF : CASSIE
    081C5806 : REY
    081C580A : SEDA
    081C580F : KIKO
    081C5814 : MINA
    081C5819 : NORIE
    081C581F : SAI
    081C5823 : MOMO
    081C5828 : SUZI
  • [0x08054A7E]=0x4E34
  • [0x08054B3A]=0x0000
  • [0x08054B3C]=0x0000
pls credit

EDIT:
If you want to skip the intro+titlescreen:
  • [0x080EC5D0]=0x08079255
  • [0x080EC5C6]=0xB431
  • [0x080EC5C8]=0x4700

wwmb

Watcher

Male
Seen January 18th, 2016
Posted February 16th, 2013
20 posts
9.4 Years
[prepare for massive wall]

  00   CD C7 BB C6 C6 00 BE BF CD C5 FF 00 00 00 00 00  00 00  00  00 00 00 00  48 47 5A 08 14 45 5A 08
 01   CD C7 BB C6 C6 00 BE BF CD C5 FF 00 00 00 00 00  00 00  00  B8 0B 00 00  48 47 5A 08 14 45 5A 08 
 02   CA C9 C5 1B C7 C9 C8 00 BE BF CD C5 FF 00 00 00  00 00  00  B8 0B 00 00  64 47 5A 08 16 45 5A 08 
 03   C2 BF BB D0 D3 00 BE BF CD C5 FF 00 00 00 00 00  00 09  00  70 17 00 00  94 47 5A 08 18 45 5A 08 
 04   CC BB C1 C1 BF BE 00 BE BF CD C5 FF 00 00 00 00  00 09  00  70 17 00 00  CC 47 5A 08 24 45 5A 08 
 05   BD C9 C7 C0 C9 CC CE 00 BE BF CD C5 FF 00 00 00  00 09  00  70 17 00 00  03 48 5A 08 30 45 5A 08 
 06   CA CC BF CE CE D3 00 BE BF CD C5 FF 00 00 00 00  00 08  00  28 23 00 00  3C 48 5A 08 3C 45 5A 08 
 07   BC CC C3 BD C5 00 BE BF CD C5 FF 00 00 00 00 00  00 08  00  28 23 00 00  72 48 5A 08 4E 45 5A 08 
 08   BD BB C7 CA 00 BE BF CD C5 FF 00 00 00 00 00 00  00 08  00  28 23 00 00  A8 48 5A 08 60 45 5A 08 
 09   C2 BB CC BE 00 BE BF CD C5 FF 00 00 00 00 00 00  00 08  00  28 23 00 00  E1 48 5A 08 72 45 5A 08 
 0A   CD C7 BB C6 C6 00 BD C2 BB C3 CC FF 00 00 00 00  01 00  01  D0 07 00 00  14 49 5A 08 84 45 5A 08 
 0B   CA C9 C5 1B C7 C9 C8 00 BD C2 BB C3 CC FF 00 00  01 00  01  D0 07 00 00  30 49 5A 08 86 45 5A 08 
 0C   C2 BF BB D0 D3 00 BD C2 BB C3 CC FF 00 00 00 00  01 00  01  D0 07 00 00  61 49 5A 08 88 45 5A 08 
 0D   CA CC BF CE CE D3 00 BD C2 BB C3 CC FF 00 00 00  01 00  01  D0 07 00 00  7E 49 5A 08 8A 45 5A 08 
 0E   BD C9 C7 C0 C9 CC CE 00 BD C2 BB C3 CC FF 00 00  01 00  01  D0 07 00 00  9B 49 5A 08 8C 45 5A 08 
 0F   CC BB C1 C1 BF BE 00 BD C2 BB C3 CC FF 00 00 00  01 00  01  D0 07 00 00  B9 49 5A 08 8E 45 5A 08 
 10   BC CC C3 BD C5 00 BD C2 BB C3 CC FF 00 00 00 00  01 00  01  D0 07 00 00  D5 49 5A 08 90 45 5A 08 
 11   BD BB C7 CA 00 BD C2 BB C3 CC FF 00 00 00 00 00  01 00  01  D0 07 00 00  F2 49 5A 08 92 45 5A 08 
 12   C2 BB CC BE 00 BD C2 BB C3 CC FF 00 00 00 00 00  01 00  01  D0 07 00 00  0E 4A 5A 08 94 45 5A 08 
 13   CC BF BE 00 CA C6 BB C8 CE FF 00 00 00 00 00 00  02 05  02  B8 0B 00 00  2A 4A 5A 08 96 45 5A 08 
 14   CE CC C9 CA C3 BD BB C6 00 CA C6 BB C8 CE FF 00  02 05  02  B8 0B 00 00  44 4A 5A 08 9A 45 5A 08 
 15   CA CC BF CE CE D3 00 C0 C6 C9 D1 BF CC CD FF 00  02 05  02  B8 0B 00 00  69 4A 5A 08 9E 45 5A 08 
 16   BD C9 C6 C9 CC C0 CF C6 00 CA C6 BB C8 CE FF 00  02 04  02  88 13 00 00  80 4A 5A 08 A2 45 5A 08 
 17   BC C3 C1 00 CA C6 BB C8 CE FF 00 00 00 00 00 00  02 04  02  88 13 00 00  A8 4A 5A 08 AA 45 5A 08 
 18   C1 C9 CC C1 BF C9 CF CD 00 CA C6 BB C8 CE FF 00  02 04  02  88 13 00 00  D6 4A 5A 08 B2 45 5A 08 
 19   CC BF BE 00 BC CC C3 BD C5 FF 00 00 00 00 00 00  00 05  03  F4 01 00 00  FE 4A 5A 08 BA 45 5A 08 
 1A   D3 BF C6 C6 C9 D1 00 BC CC C3 BD C5 FF 00 00 00  00 05  03  F4 01 00 00  35 4B 5A 08 BE 45 5A 08 
 1B   BC C6 CF BF 00 BC CC C3 BD C5 FF 00 00 00 00 00  00 05  03  F4 01 00 00  6A 4B 5A 08 C2 45 5A 08 
 1C   CC BF BE 00 BC BB C6 C6 C9 C9 C8 FF 00 00 00 00  01 00  03  F4 01 00 00  9D 4B 5A 08 C6 45 5A 08 
 1D   BC C6 CF BF 00 BC BB C6 C6 C9 C9 C8 FF 00 00 00  01 00  03  F4 01 00 00  D4 4B 5A 08 C8 45 5A 08 
 1E   D3 BF C6 C6 C9 D1 00 BC BB C6 C6 C9 C9 C8 FF 00  01 00  03  F4 01 00 00  0C 4C 5A 08 CA 45 5A 08 
 1F   CC BF BE 00 CE BF C8 CE FF 00 00 00 00 00 00 00  01 08  03  10 27 00 00  44 4C 5A 08 CC 45 5A 08 
 20   BC C6 CF BF 00 CE BF C8 CE FF 00 00 00 00 00 00  01 08  03  10 27 00 00  6E 4C 5A 08 DE 45 5A 08 
 21   CD C9 C6 C3 BE 00 BC C9 BB CC BE FF 00 00 00 00  01 05  03  B8 0B 00 00  99 4C 5A 08 F0 45 5A 08 
 22   CD C6 C3 BE BF FF 00 00 00 00 00 00 00 00 00 00  01 07  03  40 1F 00 00  C7 4C 5A 08 F4 45 5A 08 
 23   C0 BF C8 BD BF 00 C6 BF C8 C1 CE C2 FF 00 00 00  00 00  03  F4 01 00 00  EC 4C 5A 08 04 46 5A 08 
 24   C0 BF C8 BD BF 00 D1 C3 BE CE C2 FF 00 00 00 00  00 00  03  F4 01 00 00  0F 4D 5A 08 06 46 5A 08 
 25   CE C3 CC BF FF 00 00 00 00 00 00 00 00 00 00 00  00 04  03  20 03 00 00  32 4D 5A 08 08 46 5A 08 
 26   CD CE BB C8 BE FF 00 00 00 00 00 00 00 00 00 00  01 03  03  58 1B 00 00  67 4D 5A 08 10 46 5A 08 
 27   C7 CF BE 00 BC BB C6 C6 FF 00 00 00 00 00 00 00  01 00  03  C8 00 00 00  84 4D 5A 08 20 46 5A 08 
 28   BC CC BF BB C5 BB BC C6 BF 00 BE C9 C9 CC FF 00  01 05  03  B8 0B 00 00  B1 4D 5A 08 22 46 5A 08 
 29   CD BB C8 BE 00 C9 CC C8 BB C7 BF C8 CE FF 00 00  02 05  03  B8 0B 00 00  E2 4D 5A 08 26 46 5A 08 
 2A   CD C3 C6 D0 BF CC 00 CD C2 C3 BF C6 BE FF 00 00  02 05  03  00 00 00 00  11 4E 5A 08 2A 46 5A 08 
 2B   C1 C9 C6 BE 00 CD C2 C3 BF C6 BE FF 00 00 00 00  02 05  03  00 00 00 00  43 4E 5A 08 2E 46 5A 08 
 2C   C1 C6 BB CD CD 00 C9 CC C8 BB C7 BF C8 CE FF 00  02 05  03  00 00 00 00  76 4E 5A 08 32 46 5A 08 
 2D   CE D0 FF 00 00 00 00 00 00 00 00 00 00 00 00 00  00 00  03  B8 0B 00 00  AF 4E 5A 08 36 46 5A 08 
 2E   CC C9 CF C8 BE 00 CE D0 FF 00 00 00 00 00 00 00  00 00  03  A0 0F 00 00  CE 4E 5A 08 38 46 5A 08 
 2F   BD CF CE BF 00 CE D0 FF 00 00 00 00 00 00 00 00  00 00  03  A0 0F 00 00  F9 4E 5A 08 3A 46 5A 08 
 30   C1 C6 C3 CE CE BF CC 00 C7 BB CE FF 00 00 00 00  01 00  04  D0 07 00 00  24 4F 5A 08 3C 46 5A 08 
 31   C4 CF C7 CA 00 C7 BB CE FF 00 00 00 00 00 00 00  01 00  04  D0 07 00 00  4C 4F 5A 08 3E 46 5A 08 
 32   CD CA C3 C8 00 C7 BB CE FF 00 00 00 00 00 00 00  01 00  04  D0 07 00 00  7A 4F 5A 08 40 46 5A 08 
 33   BD 00 C6 E3 EB 00 C8 C9 CE BF 00 C7 BB CE FF 00  01 00  04  F4 01 00 00  A9 4F 5A 08 42 46 5A 08 
 34   BE 00 C8 C9 CE BF 00 C7 BB CE FF 00 00 00 00 00  01 00  04  F4 01 00 00  D8 4F 5A 08 44 46 5A 08 
 35   BF 00 C8 C9 CE BF 00 C7 BB CE FF 00 00 00 00 00  01 00  04  F4 01 00 00  03 50 5A 08 46 46 5A 08 
 36   C0 00 C8 C9 CE BF 00 C7 BB CE FF 00 00 00 00 00  01 00  04  F4 01 00 00  2F 50 5A 08 48 46 5A 08 
 37   C1 00 C8 C9 CE BF 00 C7 BB CE FF 00 00 00 00 00  01 00  04  F4 01 00 00  5B 50 5A 08 4A 46 5A 08 
 38   BB 00 C8 C9 CE BF 00 C7 BB CE FF 00 00 00 00 00  01 00  04  F4 01 00 00  86 50 5A 08 4C 46 5A 08 
 39   BC 00 C8 C9 CE BF 00 C7 BB CE FF 00 00 00 00 00  01 00  04  F4 01 00 00  B2 50 5A 08 4E 46 5A 08 
 3A   BD 00 C2 DD DB DC 00 C8 C9 CE BF 00 C7 BB CE FF  01 00  04  F4 01 00 00  DD 50 5A 08 50 46 5A 08 
 3B   CD CF CC C0 00 C7 BB CE FF 00 00 00 00 00 00 00  01 08  04  A0 0F 00 00  0D 51 5A 08 52 46 5A 08 
 3C   CE C2 CF C8 BE BF CC 00 C7 BB CE FF 00 00 00 00  01 08  04  A0 0F 00 00  41 51 5A 08 64 46 5A 08 
 3D   C0 C3 CC BF 00 BC C6 BB CD CE 00 C7 BB CE FF 00  01 08  04  A0 0F 00 00  78 51 5A 08 76 46 5A 08 
 3E   CA C9 D1 BE BF CC 00 CD C8 C9 D1 00 C7 BB CE FF  01 08  04  A0 0F 00 00  B2 51 5A 08 88 46 5A 08 
 3F   BB CE CE CC BB BD CE 00 C7 BB CE FF 00 00 00 00  01 08  04  A0 0F 00 00  EB 51 5A 08 9A 46 5A 08 
 40   C0 C3 CD CD CF CC BF 00 C7 BB CE FF 00 00 00 00  01 08  04  A0 0F 00 00  23 52 5A 08 AC 46 5A 08 
 41   CD CA C3 C5 BF CD 00 C7 BB CE FF 00 00 00 00 00  01 08  04  A0 0F 00 00  5A 52 5A 08 BE 46 5A 08 
 42   BC BB C6 C6 00 CA C9 CD CE BF CC FF 00 00 00 00  03 00  05  E8 03 00 00  90 52 5A 08 D0 46 5A 08 
 43   C1 CC BF BF C8 00 CA C9 CD CE BF CC FF 00 00 00  03 00  05  E8 03 00 00  B8 52 5A 08 D2 46 5A 08 
 44   CC BF BE 00 CA C9 CD CE BF CC FF 00 00 00 00 00  03 00  05  E8 03 00 00  DD 52 5A 08 D4 46 5A 08 
 45   BC C6 CF BF 00 CA C9 CD CE BF CC FF 00 00 00 00  03 00  05  E8 03 00 00  02 53 5A 08 D6 46 5A 08 
 46   BD CF CE BF 00 CA C9 CD CE BF CC FF 00 00 00 00  03 00  05  E8 03 00 00  26 53 5A 08 D8 46 5A 08 
 47   CA C3 C5 BB 00 CA C9 CD CE BF CC FF 00 00 00 00  03 01  05  DC 05 00 00  4C 53 5A 08 DA 46 5A 08 
 48   C6 C9 C8 C1 00 CA C9 CD CE BF CC FF 00 00 00 00  03 01  05  DC 05 00 00  7B 53 5A 08 DE 46 5A 08 
 49   CD BF BB 00 CA C9 CD CE BF CC FF 00 00 00 00 00  03 01  05  DC 05 00 00  A0 53 5A 08 E2 46 5A 08 
 4A   CD C5 D3 00 CA C9 CD CE BF CC FF 00 00 00 00 00  03 01  05  DC 05 00 00  C7 53 5A 08 E6 46 5A 08 
 4B   C5 C3 CD CD 00 CA C9 CD CE BF CC FF 00 00 00 00  03 01  05  DC 05 00 00  EC 53 5A 08 EA 46 5A 08 
 4C   CA C3 BD C2 CF 00 BE C9 C6 C6 FF 00 00 00 00 00  04 00  06  B8 0B 00 00  12 54 5A 08 EE 46 5A 08 
 4D   CA C3 C5 BB BD C2 CF 00 BE C9 C6 C6 FF 00 00 00  04 00  06  B8 0B 00 00  3D 54 5A 08 F0 46 5A 08 
 4E   C7 BB CC C3 C6 C6 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  6A 54 5A 08 F2 46 5A 08 
 4F   CE C9 C1 BF CA C3 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  96 54 5A 08 F4 46 5A 08 
 50   BD D3 C8 BE BB CB CF C3 C6 00 BE C9 C6 C6 FF 00  04 00  06  B8 0B 00 00  C2 54 5A 08 F6 46 5A 08 
 51   BD C2 C3 C5 C9 CC C3 CE BB 00 BE C9 C6 C6 FF 00  04 00  06  B8 0B 00 00  F1 54 5A 08 F8 46 5A 08 
 52   CE C9 CE C9 BE C3 C6 BF 00 BE C9 C6 C6 FF 00 00  04 00  06  B8 0B 00 00  20 55 5A 08 FA 46 5A 08 
 53   C4 C3 C1 C1 C6 D3 CA CF C0 C0 00 BE C9 C6 C6 FF  04 00  06  B8 0B 00 00  4E 55 5A 08 FC 46 5A 08 
 54   C7 BF C9 D1 CE C2 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  7E 55 5A 08 FE 46 5A 08 
 55   BD C6 BF C0 BB C3 CC D3 00 BE C9 C6 C6 FF 00 00  04 00  06  B8 0B 00 00  AA 55 5A 08 00 47 5A 08 
 56   BE C3 CE CE C9 00 BE C9 C6 C6 FF 00 00 00 00 00  04 00  06  B8 0B 00 00  D8 55 5A 08 02 47 5A 08 
 57   CD C7 C9 C9 BD C2 CF C7 00 BE C9 C6 C6 FF 00 00  04 00  06  B8 0B 00 00  03 56 5A 08 04 47 5A 08 
 58   CE CC BF BF BD C5 C9 00 BE C9 C6 C6 FF 00 00 00  04 00  06  B8 0B 00 00  31 56 5A 08 06 47 5A 08 
 59   CE C9 CC BD C2 C3 BD 00 BE C9 C6 C6 FF 00 00 00  04 00  06  B8 0B 00 00  5E 56 5A 08 08 47 5A 08 
 5A   C7 CF BE C5 C3 CA 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  8B 56 5A 08 0A 47 5A 08 
 5B   BE CF CD C5 CF C6 C6 00 BE C9 C6 C6 FF 00 00 00  04 00  06  B8 0B 00 00  B7 56 5A 08 0C 47 5A 08 
 5C   D1 D3 C8 BB CF CE 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  E4 56 5A 08 0E 47 5A 08 
 5D   BC BB C6 CE C9 D3 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  10 57 5A 08 10 47 5A 08 
 5E   C5 BF BD C6 BF C9 C8 00 BE C9 C6 C6 FF 00 00 00  04 00  06  B8 0B 00 00  3C 57 5A 08 12 47 5A 08 
 5F   BB D4 CF CC C3 C6 C6 00 BE C9 C6 C6 FF 00 00 00  04 00  06  B8 0B 00 00  69 57 5A 08 14 47 5A 08 
 60   CD C5 C3 CE CE D3 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  97 57 5A 08 16 47 5A 08 
 61   CD D1 BB BC C6 CF 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  C3 57 5A 08 18 47 5A 08 
 62   C1 CF C6 CA C3 C8 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  EF 57 5A 08 1A 47 5A 08 
 63   C6 C9 CE BB BE 00 BE C9 C6 C6 FF 00 00 00 00 00  04 00  06  B8 0B 00 00  1B 58 5A 08 1C 47 5A 08 
 64   CD BF BF BE C9 CE 00 BE C9 C6 C6 FF 00 00 00 00  04 00  06  B8 0B 00 00  46 58 5A 08 1E 47 5A 08 
 65   CA C3 C5 BB 00 BD CF CD C2 C3 C9 C8 FF 00 00 00  04 00  07  D0 07 00 00  72 58 5A 08 20 47 5A 08 
 66   CC C9 CF C8 BE 00 BD CF CD C2 C3 C9 C8 FF 00 00  04 00  07  D0 07 00 00  A2 58 5A 08 22 47 5A 08 
 67   C5 C3 CD CD 00 BD CF CD C2 C3 C9 C8 FF 00 00 00  04 00  07  D0 07 00 00  D1 58 5A 08 24 47 5A 08 
 68   D4 C3 C1 D4 BB C1 00 BD CF CD C2 C3 C9 C8 FF 00  04 00  07  D0 07 00 00  02 59 5A 08 26 47 5A 08 
 69   CD CA C3 C8 00 BD CF CD C2 C3 C9 C8 FF 00 00 00  04 00  07  D0 07 00 00  34 59 5A 08 28 47 5A 08 
 6A   BE C3 BB C7 C9 C8 BE 00 BD CF CD C2 C3 C9 C8 FF  04 00  07  D0 07 00 00  63 59 5A 08 2A 47 5A 08 
 6B   BC BB C6 C6 00 BD CF CD C2 C3 C9 C8 FF 00 00 00  04 00  07  D0 07 00 00  93 59 5A 08 2C 47 5A 08 
 6C   C1 CC BB CD CD 00 BD CF CD C2 C3 C9 C8 FF 00 00  04 00  07  D0 07 00 00  C0 59 5A 08 2E 47 5A 08 
 6D   C0 C3 CC BF 00 BD CF CD C2 C3 C9 C8 FF 00 00 00  04 00  07  D0 07 00 00  F3 59 5A 08 30 47 5A 08 
 6E   D1 BB CE BF CC 00 BD CF CD C2 C3 C9 C8 FF 00 00  04 00  07  D0 07 00 00  25 5A 5A 08 32 47 5A 08 
 6F   CD C8 C9 CC C6 BB D2 00 BE C9 C6 C6 FF 00 00 00  04 05  06  10 27 00 00  58 5A 5A 08 34 47 5A 08 
 70   CC C2 D3 BE C9 C8 00 BE C9 C6 C6 FF 00 00 00 00  04 05  06  10 27 00 00  83 5A 5A 08 36 47 5A 08 
 71   C6 BB CA CC BB CD 00 BE C9 C6 C6 FF 00 00 00 00  04 05  06  10 27 00 00  AE 5A 5A 08 38 47 5A 08 
 72   D0 BF C8 CF CD BB CF CC 00 BE C9 C6 C6 FF 00 00  04 05  06  10 27 00 00  D9 5A 5A 08 3A 47 5A 08 
 73   BD C2 BB CC C3 D4 BB CC BE 00 BE C9 C6 C6 FF 00  04 05  06  10 27 00 00  04 5B 5A 08 3C 47 5A 08 
 74   BC C6 BB CD CE C9 C3 CD BF 00 BE C9 C6 C6 FF 00  04 05  06  10 27 00 00  2F 5B 5A 08 3E 47 5A 08 
 75   D1 BB C3 C6 C7 BF CC 00 BE C9 C6 C6 FF 00 00 00  04 05  06  10 27 00 00  5A 5B 5A 08 40 47 5A 08 
 76   CC BF C1 C3 CC C9 BD C5 00 BE C9 C6 C6 FF 00 00  04 05  06  10 27 00 00  85 5B 5A 08 42 47 5A 08 
 77   CC BF C1 C3 BD BF 00 BE C9 C6 C6 FF 00 00 00 00  04 05  06  10 27 00 00  B0 5B 5A 08 44 47 5A 08 
 78   CC BF C1 C3 CD CE BF BF C6 00 BE C9 C6 C6 FF 00  04 05  06  10 27 00 00  DB 5B 5A 08 46 47 5A 08 
Sooo... this is the hex for the decorations in Emerald (and it is unlikely to be very different in RS) I know it first starts with an identifier (the Decoration ID, if you will) that is in bold above. Next comes the decoration's string (in blue) But then I get lost with the next two bytes. In green we have what category each decoration is (ie: 0x75 WAILMER DOLL is in the dolls category: 0x6). Next comes two more unknown bytes, and two padding bytes? And lastly, in red, we have the pointers to each item's description (back to 0x75: "A large doll.|Place it on a mat|or a desk.") and what I believe could be the tiles used to make the decoration (0x75: B7 00).

Could someone help me complete this table and confirm/dismiss my observations? As I have ran out of ideas as to what they could mean.

(the table of decorations begins at 0x5A5C08, the descriptions at: 0x5A4748, and the tile numbers are at: 0x5A4514.

0x5A4688 seem to be the beginning of a table for the dolls like 0x75)

Thanks!
Female
Seen October 4th, 2018
Posted January 24th, 2015
192 posts
12.1 Years
Firered's "wait-for-interrupt"-loop is quite inefficient. Here is my suggested patch. (Experimental, may or may not freeze the game.)
BEFORE:
080008aa  8b91 ldrh r1, [r2, #0x1c]
080008ac  1c18 add r0, r3, #0x0
080008ae  4008 and r0, r1
080008b0  2800 cmp r0, #0x0
080008b2  d0fa beq $080008aa
080008b4  bc01 pop {r0}
080008b6  4700 bx r0

AFTER:
080008aa  df02 swi $02
080008ac  8b91 ldrh r1, [r2, #0x1c]
080008ae  1c18 add r0, r3, #0x0
080008b0  4008 and r0, r1
080008b2  2800 cmp r0, #0x0
080008b4  d0f9 beq $080008aa
080008b6  bd00 pop {pc}
This should be useful if emulation is slow on your machine. Or if you want to be even faster when holding the space key.

tajaros

Hi I'm dawg

Age 20
Male
Philippines
Seen August 7th, 2015
Posted April 15th, 2013
857 posts
7.4 Years
Is there a way to make it so you can use fly to get to the towns without a need to go to the town's pokemon center first? I don't mean warping, I mean that you can use the fly HM to go anywhere despite not visiting the pokemon center in said town first.
Um, you can change the position of the flying position in Advance Map you need to go to events tab and change its position and that would be it. :)

karatekid552

What happens if I push it?....

Male
Do you really want to know? Really?
Seen January 12th, 2015
Posted December 14th, 2014
1,766 posts
6.9 Years
Hey, are the flags that enable you to be able to use 'fly' to get to a town's pokemon center able to be set at any time? I would like to set those flags automatically for everywhere at the start of a game.
Simple answer is yes, but this belongs in simple questions, just FYI.

Paired with Simba

Shiny Quagsire

I'm Still Alive, Elsewhere

Age 21
Male
Hoenn Safari Zone
Seen March 10th, 2018
Posted April 17th, 2017
700 posts
10.4 Years
I have a question... How can I replease a ordinary LOW HP SIGNAL with music of LOW HP theme from Pokemon BW <Which I recreated to GBA> ?
There are a few ways you could do this. You could have the main music get replaced with your new music, or you could have the low hp track in Sappy include your song along with it, and disable the main track. So it is possible, it'd just take some time to ASM hack out, because it will require some ASM hackery.

Darthatron

巨大なトロール。

Age 27
Male
Melbourne, Australia
Seen February 2nd, 2015
Posted October 28th, 2014
1,152 posts
13.7 Years
So editing the Pokemon that is released by the Professor in the games is easy, and I think possible with some tools. However, the cry does not change. Here are some changes that need to be made to change the cry of this Pokemon.

FireRed:
0812FB38: 02 48
0812FB42: 30 BD XX XX 00 00
Ruby:
0800A506: 03 48 C0 46
0800A512: 00 BD XX XX 00 00
Emerald:
08030B0C: XX XX
Where XX XX is the index of the Pokemon in reversed hex. For example Charizard would be 06 00. A list can be found here.
あなた は しきしゃ です
わたし は ばか です

Jambo51

Glory To Arstotzka

Male
Seen January 28th, 2018
Posted December 6th, 2015
732 posts
10.3 Years
But What Code I must write on ASM? I'm not good in ASM Hacking.
This would be quite difficult to actually do, since the new music would have to be implemented effectively as an indefinite fanfare.

I'm honestly not sure how the game does the current low HP thing, but to replace it with BW's one, you'd need to pause the playing music, play the BW music, and on the circumstances changing so it doesn't need to play any longer, resume playing the normal theme.
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!

GoGoJJTech

(☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)

Age 20
Female
Earth
Seen December 9th, 2016
Posted December 5th, 2016
2,473 posts
6.9 Years
So editing the Pokemon that is released by the Professor in the games is easy, and I think possible with some tools. However, the cry does not change. Here are some changes that need to be made to change the cry of this Pokemon.

FireRed:
0812FB38: 02 48
0812FB42: 30 BD XX XX 00 00
Ruby:
0800A506: 03 48 C0 46
0800A512: 00 BD XX XX 00 00
Emerald:
08030B0C: XX XX
Where XX XX is the index of the Pokemon in reversed hex. For example Charizard would be 06 00. A list can be found here.

Nice find Darthatron I will try to do this for recreating platinum when lopunny appears.
I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
Romhack.me Profile - Pokecommunity Profile - Youtube Channel

Support me at my site!
Pokémon Platinum Red and Blue

Jambo51

Glory To Arstotzka

Male
Seen January 28th, 2018
Posted December 6th, 2015
732 posts
10.3 Years
So, I've gotten sick of being asked for this, so I figured it might be a good idea to share it. It's so short and easy that it definitely doesn't warrant having its own thread, so putting it here seems like a good compromise.

Extending the Number of Direct Sound Tracks on 3rd Gen Pokémon Games

It's as easy as this:
  1. Search for the hex string "00 C5 94 00" in your ROM
  2. Replace said string with "00 CX 94 00" where X stands for the number of maximum DS tracks

Now, there are limits here. Fire Red and Emerald (presumably Leaf Green too) can support a maximum of 12 (0xC) tracks, so you can put 00 CC 94 00 for these ROMs, however, Ruby (presumably Sapphire too) are different. RS can only support a maximum of 7!

BPR - 12
BPG - 12
BPE - 12
AXV - 7
AXP - 7
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
Advertiser Content