PDA

View Full Version : Research: FireRed Pokédex Hacking


Pages : [1] 2

Jambo51
April 16th, 2011, 06:10 AM
OK, this is an area that we seem to have very little knowledge in. No FireRed hacks have regional pokédexes (that i'm aware of), and almost all hacks get around the evolution problem (national dex pokémon not evolving without the national dex) simply by awarding the national dex at the start of the game. While this is alright, and it works, it doesn't look very professional.

We also (understandably, due to the large number of limiting bytes/words (trust me, it's both as i've done some research into it)) haven't ever really put any concerted effort into extending the pokédex.
What i'm proposing is that a few of us work together to actually work out how plausible it is, or indeed even if it is plausible.

I can also post some of my research into the Pokédex, but please note it's still fairly limited. All of the information below is for FireRed.

Kanto Dex Limiting Bytes:(Bear in mind that it loops the compare + 1 times, as it also loops on 0)
0x10352C - mov r1, #0x97
0x1035F6 - cmp r0, #0x96

Evolutions work without National Dex:At 0xCE91A change the next 4 bytes to 00 00 14 E0. This makes the previously conditional branch into an unconditional branch, which fixes the evolutions.

Seen/Caught Flags:There are 3 (yes, 3) sets of seen flags. I don't know why this is, but this would surely be a problem for any extension hack, as these would all need repointed to support more pokémon. These are all DMA protected, so it's impossible to give exact locations, but I do know how the game gets them, so i'll post that.

In all 3 cases, the game reads the ram location 0x0300500C for a base location, adds a specific amount to that base location, then adds the appropriate number of bytes to that to find the actual flag, the finally runs a flag decryption, but does not use the known flag decrypter at 0x6E6D0.

For the caught checks, the game runs the same routine, but passes it a different index. This makes the game check the caught flag instead of the seen flag. There are only 1 set of caught flags that i'm aware of. Again, they're DMA protected.

In any case, the routine which handles this, as well as the actual caught check, is at 0x104AB0.

These are the ones i've figured out so far:
R0 = Pokémon Species in in game index numbering.
R1 = Check Seen = 0, Check Caught = 1, Set Seen = 2, Set Caught = 3

Pokédex Information Page:This is the page which opens up when you select a Pokémon's name on the Pokédex, and shows pertinent information to that Pokémon's species.

The routine again checks the caught flag (you can't select a species name if you've not seen it, of course), and then proceed to load the information from the Pokédex information table. This is an interesting routine, in that it reads from a static ram location (the Pokédex's ram location after writing etc, is actually static). It reads which NUMBER you've pressed on, and then loads the Pokédex slot from the ram location which matches that slot. In other words, there are a set of converting (National -> Regional) routines used here which are largely (if not completely) useless.

Anyway, since the information loaded is already in National Dex numbering, it loads the data in order from the Information table, which starts at 0x44E850, including Missingno's slot 0. All the data except the species name (Pidgey, Rattata etc, not Tiny Bird, Mouse etc), sprite and cry is loaded using this routine. This routine is at 0x1058C4. The exceptions named above are just written directly from the original Pokédex data.

Known Locations related to this:
0x44E850 - Pokédex Information Table - 0x24 Bytes per entry, with 412 (386 + 25 + 1) entries.
0x02003400 - Pokédex Ram Location - 0x8 bytes per entry, with 386 entries (expandable in theory). Stores a pointer to the species name (if seen, else stores the pointer to the blank entry), the Pokémon species ID (H-Word), and the seen/caught status (H-Word).
0x020033B0 - Current Pokédex Page - Only used like this if on a species page. Copies the second word of the actual pokédex ram to here.
0x020033B4 - Current Pokédex Slot. Don't know an awful lot more than this.
0x020033C2 - Byte representing which mode the Pokédex is in. 0x0 = Regional, 0x5 = National.
0x020033C8 - H-Word - limit of the Pokédex.
0x020033CA - 3 bytes which change on changing page on the information screens. They change to 0xFF's when changing, then change to 0x2, 0x3 and 0x4 when on a page.
0x020033DA - H-Word - Species ID for cry to play.
0x020033E2 - H-Word - Offset from top of Pokédex. How many scrolls down you are from top of Pokédex. Hard to explain.

Main Pokédex Page (Listing):This is where most of the grunt work of the Pokédex is executed. The main routine starts at 0x103518. It checks what dex mode you're in, and loads the appropriate routine from a table, then mov PC, R0. It loads the Pokédex order from a table at 0x251FEE.

The rom then proceeds to check the caught/seen status of the first unchecked Pokémon in the dex, starting with Bulbasaur. If seen, it adds [Pokémon Species ID]*10 to the names array (0x08245EE0), and then stores the pointer at 0x02003400 + [Check Number*8]. It then writes the species ID as a halfword to 0x02003404 + [Check Number]*8. Then it finally writes the status of that slot's check into the following halfword.

Then it repeats until the check number becomes equal to the number of checks to be run. For the Kanto (Regional) Dex, that number is 0x96. For the National Dex, it's 0x181. We already have 411 Pokémon in the game (technically), so a good place to start would be getting the rom to show those extra 25 Pokémon on the dex.

The game limits the length the dex to the last SEEN pokémon by copying the ID of the current Pokémon being checked, IF it has been seen, to R10.

649 Patch Alpha 2 Available Here: http://www.pokecommunity.com/showpost.php?p=6932134&postcount=169

knizz
April 16th, 2011, 12:51 PM
0300500C is pointing to the second of three savegame blocks that change position to avoid overusing certain parts of the memory. The data in it is tightly packed.

08104AB0 uses 08104AFE or 08104B14 depending on whether R1 is 0 or 1.

R1=0 loc_08104AFE:
LDR R0, =saveblock2
LDR R0, [R0]
ADDS R0, #0x5C @ Start of second flagdata
ADDS R0, R0, R4 @ R4 contains flag-nr (=pokemon-nr minus 1) divided by 8
LDRB R1, [R0]
ANDS R1, R6 @ R6 has only one of the first 8 bits set
CMP R1, #0
BEQ loc_08104BB0

R1=1 loc_08104B14:
LDR R0, =saveblock2
LDR R2, [R0]
MOVS R0, R2
ADDS R0, #0x28 @ Start of first flagdata
ADDS R0, R0, R4 @ R4 like above
LDRB R1, [R0]
ANDS R1, R6 @ R6 like above
CMP R1, #0
BEQ loc_08104BB0

Because the first data starts at 0x28 and ends at 0x5C you only have enough place for (0x5C-0x28)*8 pokemon. (=416) Unless you know how to repoint in savegames you have these size constraints.

Jambo51
April 16th, 2011, 01:35 PM
Because the first data starts at 0x28 and ends at 0x5C you only have enough place for (0x5C-0x28)*8 pokemon. (=416) Unless you know how to repoint in savegames you have these size constraints.

Thanks for letting me know that. I guess I shall have to learn how to repoint data in the save game. But nonetheless, I'm going to make an effort to get the Pokédex to use those 416 slots for now!

Full Metal
April 16th, 2011, 02:14 PM
Yahoo~!
:>
Thanks for posting. As soon as I quit fideting with phoenix I'll get to work on using this. :)

colcolstyles
April 16th, 2011, 06:27 PM
I'm not a Fire Red hacker but, for what it's worth, I did a little research on the "habitat" data of pokémon. You can read about it here (http://www.pokecommunity.com/showpost.php?p=6263014&postcount=75).

Full Metal
April 16th, 2011, 07:29 PM
^ that would be a good tool to make.
Sounds long and tedious.

Jambo51
April 17th, 2011, 04:23 AM
@colcolstyles
Fantastic, every little helps as they say! It's something that would've needed researching, and you've saved us having to do so, so thanks!

@fullmetal
I wish it was easy, lol. I really need someone to do the "boring" side of the hack. I need someone to get the 4th gen cries working, as well as inputting all the relevant pokémon stats, so that they're ready to input if I get it working. If you can't do ASM research (I don't know if you can, so don't want to assume.) that'd be a helpful place to start. If you CAN do ASM research, every extra eye looking over the process helps us to catch all the limiters, and means less mistakes!

@knizz
I don't suppose you know how to repoint stuff in savegames? It's something i've never had to do before, but in theory, couldn't I make use of JPAN's extra save block hack? It'd give us plenty of free memory to make this hack work if we could use it!

Full Metal
April 17th, 2011, 11:05 AM
There are 3 (yes, 3) sets of seen flags. I don't know why this is
maybe it has to do with the three regions? :)
EG In FR/LG I'm fairly certain there aren't any Hoenn pokemon available, although there are Jhotto pokemon... :)

Full Metal
April 17th, 2011, 12:10 PM
Thank you for unnecessary and unwanted clarification that provides no help whatsoever.
ANYWAYS...
So, in theory we have the ability to expand up to 416 pokemon in the pokedex...wait...we already have that...we should probably look at the bugs in loading entries for those 25 unknown pokemon?

Team Fail
April 17th, 2011, 12:40 PM
Thank you for unnecessary and unwanted clarification that provides no help whatsoever.
ANYWAYS...
So, in theory we have the ability to expand up to 416 pokemon in the pokedex...wait...we already have that...we should probably look at the bugs in loading entries for those 25 unknown pokemon?

That would be interesting to see. But, we would also have to expand the Pokemon table so abilities and movesets can be given to them. And what about the Hoenn Dex in RSE? How can we expand that?

Full Metal
April 17th, 2011, 01:26 PM
By 'expand' you mean, add more pokemon to the hoenn dex, not the pokedex itself. ( eg bulbasaur added to the hoenn dex. ) ?
I think there's been a thread on that somewhere...maybe. :|

Jambo51
April 17th, 2011, 01:35 PM
Did some more research, and have concluded that it's gonna be REALLY complicated to pull off. We need to repoint the 3 sets of seen flags, as well as the caught flags because we're not able to use extra space as it's used by existing game processes. We also need to repoint the actual static ram pokédex as when expanded it's too long to actually store in its existing location. This oughta be loads of fun.

Team Fail
April 17th, 2011, 01:41 PM
By 'expand' you mean, add more pokemon to the hoenn dex, not the pokedex itself. ( eg bulbasaur added to the hoenn dex. ) ?
I think there's been a thread on that somewhere...maybe. :|

Yeah, something like that. Like, after Deoxys, add Arceus, for example. But, if you wanted to insert in the 25 unused slots, that table would have to be repointed because it might not have enough room for movesets, graphics, stats, etc.

Full Metal
April 17th, 2011, 01:45 PM
We could use compression? :)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
IDEA! :)
WHAT IF...
We just used 1 bit ?
Eg: ( neededSize = numberOfPokemon / 8 ( rounded up ) ) * 2
( * 2 so that we can have a 'seen' count, and a 'caught' count )

knizz
April 18th, 2011, 01:49 AM
That's what they're doing already :(

Full Metal
April 18th, 2011, 01:05 PM
oh... :\
Well, just repoint a few things? :)

Jambo51
April 18th, 2011, 01:31 PM
oh... :\
Well, just repoint a few things? :)

It's not as simple as that. We aren't talking ROM repointing, we're talking saved RAM repointing. That's a difficult task at the best of times. Besides which, I would still need to find and modify all the limiters first anyway so there's no point worrying about this until i've repointed all the ROM data, and fixed it appropriately, and got the dex to recognise the extra slots.

NintendoBoyDX
April 19th, 2011, 07:27 PM
http://pastebin.com/eATb3Sek
Note: "graphically related" is a bad term. Those were places where it breaked that were not either:
when the pokedex was first opened
when the national dex was first opened
Also, I haven't tested them all in other places, but the ones listed that are not "graphically related" should be relevant.

Jambo51
April 25th, 2011, 01:09 PM
Using the following routine, I was able to repoint and extend the seen and caught flags for Pokémon to a free RAM location. The new routine has support for 656 caught flags, and 656 seen flags (as close to 649 as I could get using the 8 bits to a byte system, obviously aiming for the gen 5 total here!). Bear in mind however, that the routine is only limited by how much free space you allocate it. If we were to use a full save block to store caught and seen flags (which is possible using JPAN's save block hack!), we would be limited to a maximum of 10,240 pokémon. This is clearly more than enough XD.

The routine actually simplifies on the original greatly and as such, it's more open to bugs and oddities. Instead of having 3 separate sets of caught and seen flags, I reduced it to 1 longer set, pointed to a different RAM location. The only issue I have with the routine is that the new block of ram is NOT saved when saving the game.

.text
.align 2
.thumb
.thumb_func
.global seencaughtflagsrepoint
main:
add r3, r0, #0x0
add r5, r1, #0x0
lsl r2, r2, #0x18
sub r0, r3, #0x1
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r4, r0, #0x13
mov r0, #0x7
and r3, r0
mov r0, #0x80
lsl r0, r0, #0x11
lsl r0, r3
lsr r6, r0, #0x18
mov r0, #0x0
mov r12, r0
cmp r5, #0x1
beq caughtcheck
cmp r5, #0x2
beq setseen
cmp r5, #0x3
beq setcaught
cmp r5, #0x0
beq seencheck
b end
seencheck: ldr r0, newblock
there: add r0, r0, r4
ldrb r1, [r0, #0x0]
and r1, r6
cmp r1, #0x0
beq end
mov r0, #0x1
mov r12, r0
b end
caughtcheck: ldr r0, newblock
add r0, #0x52
b there
setseen: ldr r1, newblock
there2: add r1, r1, r4
ldrb r2, [r1, #0x0]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1, #0x0]
b end
setcaught: ldr r1, newblock
add r1, #0x52
b there2
end: mov r0, r12
pop {r4-r7}
pop {r1}
bx r1
.align
newblock: .word 0x0203E404


This routine could theoretically be inserted directly over the original routine as it is smaller than it. If you wish to do so, paste my routine into the rom starting at 0x104AB4, and overwrite 0x104AB2 with 00 00.
However, it is substantially safer to insert it with a ldr bx combo. Up to you I guess. If you want to use a ldr bx combo, use Register 3.

As you can see, it sets up the new caught/seen flags at 0x0203E404 (seen) and 0x0203E456 (caught). That's 82 (0x52) bytes for each set, which equates to 656 caught and seen flags.

It uses a total of 164 bytes to safely store all the relevant bits. This is (again) actually smaller than what the original rom uses just to store 416 bits worth of flags. However, because all the data isn't concurrent, we can't use that for our new data.

The routine is pretty much self explanatory, and isn't complicated to the point of being unintelligible. This solves our first BIG problem related to the expansion of the Pokédex. Now if I could just get the block to save using jpan's hack, i'd be sorted. :)

Joshuablevins
April 26th, 2011, 09:16 PM
Using the following routine, I was able to repoint and extend the seen and caught flags for Pokémon to a free RAM location. The new routine has support for 656 caught flags, and 656 seen flags (as close to 649 as I could get using the 8 bits to a byte system, obviously aiming for the gen 5 total here!). Bear in mind however, that the routine is only limited by how much free space you allocate it. If we were to use a full save block to store caught and seen flags (which is possible using JPAN's save block hack!), we would be limited to a maximum of 10,240 pokémon. This is clearly more than enough XD.

The routine actually simplifies on the original greatly and as such, it's more open to bugs and oddities. Instead of having 3 separate sets of caught and seen flags, I reduced it to 1 longer set, pointed to a different RAM location. The only issue I have with the routine is that the new block of ram is NOT saved when saving the game.

.text
.align 2
.thumb
.thumb_func
.global seencaughtflagsrepoint
main:
add r3, r0, #0x0
add r5, r1, #0x0
lsl r2, r2, #0x18
sub r0, r3, #0x1
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r4, r0, #0x13
mov r0, #0x7
and r3, r0
mov r0, #0x80
lsl r0, r0, #0x11
lsl r0, r3
lsr r6, r0, #0x18
mov r0, #0x0
mov r12, r0
cmp r5, #0x1
beq caughtcheck
cmp r5, #0x2
beq setseen
cmp r5, #0x3
beq setcaught
cmp r5, #0x0
beq seencheck
b end
seencheck: ldr r0, newblock
there: add r0, r0, r4
ldrb r1, [r0, #0x0]
and r1, r6
cmp r1, #0x0
beq end
mov r0, #0x1
mov r12, r0
b end
caughtcheck: ldr r0, newblock
add r0, #0x52
b there
setseen: ldr r1, newblock
there2: add r1, r1, r4
ldrb r2, [r1, #0x0]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1, #0x0]
b end
setcaught: ldr r1, newblock
add r1, #0x52
b there2
end: mov r0, r12
pop {r4-r7}
pop {r1}
bx r1
.align
newblock: .word 0x0203E400


This routine could theoretically be inserted directly over the original routine as it is smaller than it. If you wish to do so, paste my routine into the rom starting at 0x104AB2. However, it is substantially safer to insert it with a ldr bx combo. Up to you I guess. If you want to use a ldr bx combo, use Register 3.

As you can see, it sets up the new caught/seen flags at 0x0203E400 (seen) and 0x0203E452 (caught). That's 82 (0x52) bytes for each set, which equates to 656 caught and seen flags.

It uses a total of 164 bytes to safely store all the relevant bits. This is (again) actually smaller than what the original rom uses just to store 416 bits worth of flags. However, because all the data isn't concurrent, we can't use that for our new data.

The routine is pretty much self explanatory, and isn't complicated to the point of being unintelligible. This solves our first BIG problem related to the expansion of the Pokédex. Now if I could just get the block to save using jpan's hack, i'd be sorted. :)

Amazing work i applaud such enginuity i wish i was some help but im afraid that i only know C++ (seeing as im a computer science major) that is of no help to my knowledge

Full Metal
April 30th, 2011, 07:16 AM
Using the following routine, I was able to repoint and extend the seen and caught flags for Pokémon to a free RAM location. The new routine has support for 656 caught flags, and 656 seen flags (as close to 649 as I could get using the 8 bits to a byte system, obviously aiming for the gen 5 total here!). Bear in mind however, that the routine is only limited by how much free space you allocate it. If we were to use a full save block to store caught and seen flags (which is possible using JPAN's save block hack!), we would be limited to a maximum of 10,240 pokémon. This is clearly more than enough XD.

The routine actually simplifies on the original greatly and as such, it's more open to bugs and oddities. Instead of having 3 separate sets of caught and seen flags, I reduced it to 1 longer set, pointed to a different RAM location. The only issue I have with the routine is that the new block of ram is NOT saved when saving the game.

.text
.align 2
.thumb
.thumb_func
.global seencaughtflagsrepoint
main:
add r3, r0, #0x0
add r5, r1, #0x0
lsl r2, r2, #0x18
sub r0, r3, #0x1
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r4, r0, #0x13
mov r0, #0x7
and r3, r0
mov r0, #0x80
lsl r0, r0, #0x11
lsl r0, r3
lsr r6, r0, #0x18
mov r0, #0x0
mov r12, r0
cmp r5, #0x1
beq caughtcheck
cmp r5, #0x2
beq setseen
cmp r5, #0x3
beq setcaught
cmp r5, #0x0
beq seencheck
b end
seencheck: ldr r0, newblock
there: add r0, r0, r4
ldrb r1, [r0, #0x0]
and r1, r6
cmp r1, #0x0
beq end
mov r0, #0x1
mov r12, r0
b end
caughtcheck: ldr r0, newblock
add r0, #0x52
b there
setseen: ldr r1, newblock
there2: add r1, r1, r4
ldrb r2, [r1, #0x0]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1, #0x0]
b end
setcaught: ldr r1, newblock
add r1, #0x52
b there2
end: mov r0, r12
pop {r4-r7}
pop {r1}
bx r1
.align
newblock: .word 0x0203E400


This routine could theoretically be inserted directly over the original routine as it is smaller than it. If you wish to do so, paste my routine into the rom starting at 0x104AB2. However, it is substantially safer to insert it with a ldr bx combo. Up to you I guess. If you want to use a ldr bx combo, use Register 3.

As you can see, it sets up the new caught/seen flags at 0x0203E400 (seen) and 0x0203E452 (caught). That's 82 (0x52) bytes for each set, which equates to 656 caught and seen flags.

It uses a total of 164 bytes to safely store all the relevant bits. This is (again) actually smaller than what the original rom uses just to store 416 bits worth of flags. However, because all the data isn't concurrent, we can't use that for our new data.

The routine is pretty much self explanatory, and isn't complicated to the point of being unintelligible. This solves our first BIG problem related to the expansion of the Pokédex. Now if I could just get the block to save using jpan's hack, i'd be sorted. :)


If you been amongs the people looking for doc about how to keep your data
within battery saved memory, you've come to the right place. You'll probably
feel a bit the fool after seing how easy it is done, like i did. :P

in C, C++ you only need to create a 8bits pointer using an address within :
0x0E000000 and 0x0E00FFFF. This gives you 64K of memory.

In assembly, it's the same thing.

Note that this area can only be readed or writed 8bits at a time, meaning
it's no use trying to write data to it with a 16bits or 32bits pointer, only the
first 8 bits will get written.

For the visual amongs our horde, here's how you would do it in C++ :
{
#define GAMEPAK_RAM ((u8*)0x0E000000)
u8 *pSaveMemory = GAMEPAK_RAM;

// Save the initial data for the fibonai sequence
pSaveMemory[0] = 1;
pSaveMemory[1] = 1;

for(int i = 2; i < 13; i++)
pSaveMemory[i] = pSaveMemory[i-1] + pSaveMemory[i-2];
}

Here, we have code that write the first 13 number of the fibonaci sequence,
in the first 13 bytes of the saved ram. Take note that in reality, you shouldn't
use that memory for doing your calculations, only for backuping persistent data,
since it probably has a much more slower access rate.

-------------------------------------------------------------------------------------------------------------------
SammyF

Found here (http://www.gbadev.org/docs.php?showinfo=13)
Is this useful? :)

Syncro
May 1st, 2011, 03:25 PM
Hi, I'm fairly new to the ASM (honestly, all i can do is insert a routine) so I can't help even when I want to do.
but because this is an issue about pokedex, I would ask, Is there any possibility to remove the catch-area map?
PS: sorry for my bad english, I let you an image in case that you don´t understend what i want to remove/erase/disable.
Thanks for the answers, and of course for the research (is a great work of all of you).
C U ^^

Full Metal
May 1st, 2011, 03:42 PM
In all honesty, it would probably be easier to just modify the routine that loads it.
Getting rid of it would be a pain in the arse.
0300500C is pointing to the second of three savegame blocks that change position to avoid overusing certain parts of the memory. The data in it is tightly packed.

08104AB0 uses 08104AFE or 08104B14 depending on whether R1 is 0 or 1.

R1=0 loc_08104AFE:
LDR R0, =saveblock2
LDR R0, [R0]
ADDS R0, #0x5C @ Start of second flagdata
ADDS R0, R0, R4 @ R4 contains flag-nr (=pokemon-nr minus 1) divided by 8
LDRB R1, [R0]
ANDS R1, R6 @ R6 has only one of the first 8 bits set
CMP R1, #0
BEQ loc_08104BB0

R1=1 loc_08104B14:
LDR R0, =saveblock2
LDR R2, [R0]
MOVS R0, R2
ADDS R0, #0x28 @ Start of first flagdata
ADDS R0, R0, R4 @ R4 like above
LDRB R1, [R0]
ANDS R1, R6 @ R6 like above
CMP R1, #0
BEQ loc_08104BB0

Because the first data starts at 0x28 and ends at 0x5C you only have enough place for (0x5C-0x28)*8 pokemon. (=416) Unless you know how to repoint in savegames you have these size constraints.

Think you could point us to the routine that saves the seen/caught flag data? :)

Jambo51
May 1st, 2011, 04:25 PM
http://www.youtube.com/watch?v=ze0vPh63mEM
Sorry, I have no idea how to actually embed it in the post, so have a link instead!

Here we have video evidence of 649 Pokémon appearing in FireRed's Pokédex. As things stand, I haven't inserted the sprites or cries, or most of their stats, but NONE of what I just mentioned is routine related. Most of them (the ones with stats) are valid battlers too, so I think I can honestly say I'll have this finished within the next couple of days if I find the time.

Also shown in this video is the Kanto dex, reorganised into a regional dex. The length and order of this dex is entirely up to the hacker, but being based on LC and all, I decided to give it an appropriate pokédex order, and made the Kanto dex into the New Pokédex from GSC.

Full Metal
May 1st, 2011, 05:04 PM
Please do share how you accomplished this!
I would gladly dedicate my next (programming) project to this. :)

Gamer2020
May 1st, 2011, 08:17 PM
http://www.youtube.com/watch?v=ze0vPh63mEM
Sorry, I have no idea how to actually embed it in the post, so have a link instead!

Here we have video evidence of 649 Pokémon appearing in FireRed's Pokédex. As things stand, I haven't inserted the sprites or cries, or most of their stats, but NONE of what I just mentioned is routine related. Most of them (the ones with stats) are valid battlers too, so I think I can honestly say I'll have this finished within the next couple of days if I find the time.

Also shown in this video is the Kanto dex, reorganised into a regional dex. The length and order of this dex is entirely up to the hacker, but being based on LC and all, I decided to give it an appropriate pokédex order, and made the Kanto dex into the New Pokédex from GSC.

Not bad, I did that months ago. You figure out how to expand the seen/caught in the RAM yet? Cause that is the hard part...

Jambo51
May 1st, 2011, 11:09 PM
Not bad, I did that months ago. You figure out how to expand the seen/caught in the RAM yet? Cause that is the hard part...

Yeah, that was the first thing I did because I figured that the rest of it wouldn't work without that first.

@Full Metal
I'm still ironing out some bugs related to the hack, but when I make it bug free, I'll release the information.
I'm relatively happy to allow people to use it once it's bug free!

Gamer2020
May 5th, 2011, 01:13 AM
Yeah, that was the first thing I did because I figured that the rest of it wouldn't work without that first.

@Full Metal
I'm still ironing out some bugs related to the hack, but when I make it bug free, I'll release the information.
I'm relatively happy to allow people to use it once it's bug free!

Using the following routine, I was able to repoint and extend the seen and caught flags for Pokémon to a free RAM location. The new routine has support for 656 caught flags, and 656 seen flags (as close to 649 as I could get using the 8 bits to a byte system, obviously aiming for the gen 5 total here!). Bear in mind however, that the routine is only limited by how much free space you allocate it. If we were to use a full save block to store caught and seen flags (which is possible using JPAN's save block hack!), we would be limited to a maximum of 10,240 pokémon. This is clearly more than enough XD.

The routine actually simplifies on the original greatly and as such, it's more open to bugs and oddities. Instead of having 3 separate sets of caught and seen flags, I reduced it to 1 longer set, pointed to a different RAM location. The only issue I have with the routine is that the new block of ram is NOT saved when saving the game.

.text
.align 2
.thumb
.thumb_func
.global seencaughtflagsrepoint
main:
add r3, r0, #0x0
add r5, r1, #0x0
lsl r2, r2, #0x18
sub r0, r3, #0x1
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r4, r0, #0x13
mov r0, #0x7
and r3, r0
mov r0, #0x80
lsl r0, r0, #0x11
lsl r0, r3
lsr r6, r0, #0x18
mov r0, #0x0
mov r12, r0
cmp r5, #0x1
beq caughtcheck
cmp r5, #0x2
beq setseen
cmp r5, #0x3
beq setcaught
cmp r5, #0x0
beq seencheck
b end
seencheck: ldr r0, newblock
there: add r0, r0, r4
ldrb r1, [r0, #0x0]
and r1, r6
cmp r1, #0x0
beq end
mov r0, #0x1
mov r12, r0
b end
caughtcheck: ldr r0, newblock
add r0, #0x52
b there
setseen: ldr r1, newblock
there2: add r1, r1, r4
ldrb r2, [r1, #0x0]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1, #0x0]
b end
setcaught: ldr r1, newblock
add r1, #0x52
b there2
end: mov r0, r12
pop {r4-r7}
pop {r1}
bx r1
.align
newblock: .word 0x0203E400
This routine could theoretically be inserted directly over the original routine as it is smaller than it. If you wish to do so, paste my routine into the rom starting at 0x104AB2. However, it is substantially safer to insert it with a ldr bx combo. Up to you I guess. If you want to use a ldr bx combo, use Register 3.

As you can see, it sets up the new caught/seen flags at 0x0203E400 (seen) and 0x0203E452 (caught). That's 82 (0x52) bytes for each set, which equates to 656 caught and seen flags.

It uses a total of 164 bytes to safely store all the relevant bits. This is (again) actually smaller than what the original rom uses just to store 416 bits worth of flags. However, because all the data isn't concurrent, we can't use that for our new data.

The routine is pretty much self explanatory, and isn't complicated to the point of being unintelligible. This solves our first BIG problem related to the expansion of the Pokédex. Now if I could just get the block to save using jpan's hack, i'd be sorted. :)

Oh is that what that is? I really didn't notice that as I scrolled down. I'll take a better look at it tomorrow when I wake up. I want to compare it to the original routine and stuff.
I'm actually working on doing this to Emerald for my hack. I already have been able to add more Pokemon but the seen/caught is everybody's biggest problem I think.

Jambo51
May 5th, 2011, 01:41 PM
I actually managed to get it all working, and then somehow completely mucked it up while (I believe) trying to insert a cry. Trying to replicate it on a clean rom now, but having issues with the Pokédex screen not working. I have noted down as many definite limiters as I can find, but I basically have to start over. I hate the cries! XD

Gamer2020
May 5th, 2011, 03:46 PM
I actually managed to get it all working, and then somehow completely mucked it up while (I believe) trying to insert a cry. Trying to replicate it on a clean rom now, but having issues with the Pokédex screen not working. I have noted down as many definite limiters as I can find, but I basically have to start over. I hate the cries! XD

Just make constant back ups and stuff. I made a tool to do all the repointing and expanding for me. All I need is to solve the Pokedex problem.

Did you properly repoint everything? Keep in mind you still need to put the egg and unowns after the Pokemon that includes the icons.

Full Metal
May 6th, 2011, 04:44 AM
Just wondering...why don't we use the games own 'malloc' ?
( and of course, save a pointer to it, and such ) ?

Jambo51
May 10th, 2011, 04:58 PM
For those who've been asking, I will probably release this publically as a patch when I've finished inserting all the data. This will mean it can't be used on a hack which is in progress. I'll most likely highlight the significant data in the patch so that people can copy it over to their roms if they want to use it on an already started hack. Of course, the patch will only be for BPRE as I simply don't have the time to sit and translate all the data and limiters over to another rom.

Current Patch Progress:
Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (42% - Up to and including Servine in - No shiny pallets though)
Pokémon Data (100%)
Pokédex Entries (90% - Need to edit scale for comparison for nearly all, but everything else is in)
Movesets (0%)
TM/HM Compatibilities (5%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (60%)
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)

As you can see, there is a LOT of stuff to be done before I can truly call it complete. The routines work, yes, but that's about it.

Full Metal
May 10th, 2011, 06:16 PM
Will you also document it and release the info? ( I'm genuinely curious about it X) )
And also, this weekend after I update Bytes And Bits. I would gladly help out in any way I can! :)

Jambo51
May 11th, 2011, 07:11 AM
Will you also document it and release the info? ( I'm genuinely curious about it X) )
And also, this weekend after I update Bytes And Bits. I would gladly help out in any way I can! :)

Yeah, of course i'll release documentation to go with it. It'd be a bit daft to release the patch, and then have people try to work it all out for themselves.

Most of the hard work has been completed, with all but one routine working from what I can see, and that shouldn't be too hard to fix. Interestingly, as a side effect of fixing the Unown sprites, I came across how the game generates the Unown, and could theoretically hack that to produce controllable Unown encounters.

What I mean by that is, the hacker can set what Unown s/he wants to appear on a certain map, or even control it with variables/flags. We can FINALLY have proper GSC style Unown controlled by completing those puzzles!

mirrornineteen
May 12th, 2011, 12:19 PM
would it be possible to change the individual stats of the different unowns

knizz
May 12th, 2011, 12:28 PM
would it be possible to change the individual stats of the different unowns

That's a completely different thing. But don't they all have the same base stats?

Full Metal
May 12th, 2011, 01:05 PM
That would seem to be more or less a waste of space -- having a separate stat listing for every possible unknown. :\

Gamer2020
May 13th, 2011, 12:19 AM
Even though my posts keep getting deleted for no reason >_> I figured I should also mention you need to expand the move tutor learnable moves. I don't have the offset for BPRE but I dug this up. Just scroll towards the end.
http://www.pokecommunity.com/showpost.php?p=4162498&postcount=267
The offset there is wrong though. You want to subtract by two bytes to include the first (?)

Meta Paradox
May 13th, 2011, 02:48 AM
Hmm... you guys could edit and control the Unown that can appear on each map now, right? So if you're adding the Sinnoh and Unova listings, why not try to edit some more for the controlled changing of formes for some Pokemon? Lie Cherrim's Overcast Forme appearing only in sunlight, or when giving a certain item to Giratina or Shaymin (possibly a Griseous Orb or Gracidea) that will change their formes. This is especially neccesary for Arceus, with seventeen Plates that can change its forme AND type. So, how about it? :D

Jambo51
May 13th, 2011, 07:24 AM
Hmm... you guys could edit and control the Unown that can appear on each map now, right? So if you're adding the Sinnoh and Unova listings, why not try to edit some more for the controlled changing of formes for some Pokemon? Lie Cherrim's Overcast Forme appearing only in sunlight, or when giving a certain item to Giratina or Shaymin (possibly a Griseous Orb or Gracidea) that will change their formes. This is especially neccesary for Arceus, with seventeen Plates that can change its forme AND type. So, how about it? :D

And what if I told you i've already started doing some of the basic work needed for that...? I can already switch sprites around based on forme checks, although, I still haven't worked out a way to do type changes.

EDIT: I think that type isn't actually stored in the Pokémon's data. I think the game automatically reads the actual data table stored in the rom to determine type. In order to get TYPE changing formes, I was thinking of have the game run a set of extra checks, firstly checking the pokémon against a list of Pokémon which have formes and which type of forme (male/female sprite (Pikachu), simple sprite switch (Shellos and Gastrodon), sprite and type switch (Arceus)), and then, if it has a forme, run the appropriate check to see if the sprite needs switching. For the type, i'll need to run a LOT of extra checks. Basically, any read of the type of any given Pokémon (whether in Battle, or in status screen - Note that the Pokédex could support it too, but it's better not to really), will need to have those extra checks running and modifying the type behaviours for each given Pokémon individually.

In other words, we have forme 1 Burmy and forme 2 Burmy in our party. The check will get run for BOTH Burmys as it will match one of the forme checks, the first one will return Bug/Grass Type and Sprite number 1 (because of location or whatever it is that changes a Burmy's forme), while the second will return Bug/Steel Type and Sprite number 2. Does that make sense?

How I would go about doing it, would be to have a 650 byte long table (an entry for each Pokémon species) with the following key:
0 - No Forme
1 - Simple Sprite Switch (Including Male/Female Formes)
2 - Sprite and Type Switch

0 Speaks for itself. 1 would run appropriate checks for the species you pass it (if you pass it 0x19, it will check the Pokémon's gender, and then load the appropriate sprite, if you pass it 0x1A6 it will check where the Pokémon was caught, and load the appropriate sprite).
2 is more difficult. It would run a similar check to 1, but it would also have to force the game to bypass reading the normal Pokémon Stats Data, and make it read a separate set of data with a separate set of types.

Gamer2020
May 13th, 2011, 09:52 AM
You may also want to look into the egg moves.
The format is explained here.
http://rhw.magicstone.de/index.php?pn=attacken

D1Hazel
May 14th, 2011, 03:21 PM
Would it be possible to consider two different Pokemon to be the same Pokemon? That way we could have 28 Unowns that are created the same as other Unowns, 2/3 pikachus that are treated the same, and 7 or so of the one legendary. That would mean less hardcoded checks, but still wouldn't cover, say, cast-form.

Of course, I'm reverting to my Yuri's Revenge sensibilities, when this is more Tiberian Dawn style ASM.

Jambo51
May 14th, 2011, 03:41 PM
Would it be possible to consider two different Pokemon to be the same Pokemon? That way we could have 28 Unowns that are created the same as other Unowns, 2/3 pikachus that are treated the same, and 7 or so of the one legendary. That would mean less hardcoded checks, but still wouldn't cover, say, cast-form.

Of course, I'm reverting to my Yuri's Revenge sensibilities, when this is more Tiberian Dawn style ASM.

I'm not really 100% sure what you mean here...
The Unown are all generated in the same way, and are all treated as one species of Pokémon.
Every Pokémon is randomly generated based on their stats when it's encountered, but there are specific checks determining what forme they can take (Deoxys and Unown are the obvious examples here).

On a related note, I have managed to programme in all but 1 of the evolutionary types that were introduced in Gen 4 and 5. Including getting the New Evolutionary Stones to work properly. The only one which is currently unavailable is the gen 5 introduced one where the two traded Pokémon control whether or not they evolve.

Derlo
May 17th, 2011, 09:12 AM
Since you brought up the subject of 'new evolution' in 3rd gen...

You could try to make the orignal DN evolution system, was based on new D/N systems that were released for FR.

It would be very helpful for all.

Jambo51
May 17th, 2011, 10:18 AM
Hi all,
I wanted to know if any1 can release pokemon fire red hack with 649 pokedex.
im not really good with ASM or HEX.
Ill give credit in my hack.
Thanks.

First of all, this really isn't the place to ask for this. Careful or you'll get yourself into trouble with the mods. Secondly, the patch is NOT complete for any rom yet, and probably won't be for a while yet.

Since you brought up the subject of 'new evolution' in 3rd gen...

You could try to make the orignal DN evolution system, was based on new D/N systems that were released for FR.

It would be very helpful for all.

What? The level up Eevee with full happiness at Day/Night to get Espeon and Umbreon? I have put it in :)
Goes without saying that the rom needs the RTC for it to work though, otherwise it'll always try to evolve to Umbreon, as the routine will check the RTC time, which will be set to 0, and interpret that as night time.

Shiny Quagsire
May 21st, 2011, 04:31 PM
Wow... Just wow. I come back to visit and I find this. Great job Jambo51! I'm looking forward to seeing that awesome patch. :)

Jambo51
May 22nd, 2011, 08:01 AM
Wow... Just wow. I come back to visit and I find this. Great job Jambo51! I'm looking forward to seeing that awesome patch. :)

Thanks! I've been very busy since I developed the Day/Night Wild Pokémon routines :)

Another important update: All the evolution types work as far as I can tell, however, for people who play these hacks using a flash card rather than an emulator, I take no responsibility for any bugs caused by the new evolution types, as I cannot forsee bugs on systems I can't test on.

Gen 5's evolution type (Karrablast -> Escavalier when traded with a Shelmet or Shelmet -> Accelgor when traded with a Karrablast) works with IN GAME TRADES only at this time. I cannot test how the game works with proper trading, and as such, can make NO guarantees that it will work. I expect that it will not work, but feel free to give it a try.

While the routines for the Day/Night Specific evolutions work, I am NOT including the RTC in this patch. It is not mine, and I can't add it to the patch without first asking the people behind it's permission.

Shiny Quagsire
May 22nd, 2011, 08:01 PM
Also, about the forms earlier, I once made seasonal forms for a specific pokemon by changing the sprite based on the RTC. I lost the source somehow, but I could dig it back up sometime. Or, a different approach could be to use the animation system. I made it so animations could vary from pokemon to pokemon, so I could add a check for forms, and load a different animation that shows a specific form.

Jambo51
May 24th, 2011, 07:20 AM
Also, about the forms earlier, I once made seasonal forms for a specific pokemon by changing the sprite based on the RTC. I lost the source somehow, but I could dig it back up sometime. Or, a different approach could be to use the animation system. I made it so animations could vary from pokemon to pokemon, so I could add a check for forms, and load a different animation that shows a specific form.

I have some ideas for simple sprite varying formes, as they aren't hard to do in any way. At the end of the day, the Unown are simply differing formes of the same Pokémon, so we can easily copy the routines for the Unown, bend them to suit our purposes (check genders/held items and such) and load the appropriate sprite for the result of the check.

However, formes with differing TYPES are going to be an absolute B***H to do. From what I can tell, the type data is not stored in the Pokémon's data, but is loaded from the Pokémon data tables dynamically as it's needed. This means that we will need to create literally hundreds of new routines which run the same checks as the sprite ones above to try to force different typing on different formes.

Is it really worth doing this...?

Paupir
May 24th, 2011, 03:29 PM
You could just be lazy and add the type formes as separate Pokemon, switching which one it is in an evolutionary manner with some routine. Would there be any issue with that? The way I see it- it's too much of a hassle (Albeit, a huge accomplishment) to go about it the way you are.

Also, would you mind sharing just what the issue was with getting new evolutionary stones to work? I've had a look through the item table and the evolution table and I couldn't see anything out of the ordinary.

In any case, I'm so impressed with your work and it's really beneficial to those researching these things out of interest :)

Gamer2020
May 24th, 2011, 06:36 PM
Gen 5's evolution type (Karrablast -> Escavalier when traded with a Shelmet or Shelmet -> Accelgor when traded with a Karrablast) works with IN GAME TRADES only at this time. I cannot test how the game works with proper trading, and as such, can make NO guarantees that it will work. I expect that it will not work, but feel free to give it a try.

Use VBA-link to test the trading. Should work if in-game ones work though I think.

Meta Paradox
May 25th, 2011, 05:02 AM
I have some ideas for simple sprite varying formes, as they aren't hard to do in any way. At the end of the day, the Unown are simply differing formes of the same Pokémon, so we can easily copy the routines for the Unown, bend them to suit our purposes (check genders/held items and such) and load the appropriate sprite for the result of the check.

However, formes with differing TYPES are going to be an absolute B***H to do. From what I can tell, the type data is not stored in the Pokémon's data, but is loaded from the Pokémon data tables dynamically as it's needed. This means that we will need to create literally hundreds of new routines which run the same checks as the sprite ones above to try to force different typing on different formes.

Is it really worth doing this...?

Yeah, about the Is it really worth parts, I'm telling you, IT IS.

Moving on, I suggest that you should try to work with JPAN's hacked engine, as I can see that this and that combined would be a total FireRed hacker heaven. And I saw something about the integration with JPAN's save block hack, too, so this would be a good option.

You still do the work, though, so it's really up to you.

Jambo51
May 25th, 2011, 06:16 AM
Yeah, about the Is it really worth parts, I'm telling you, IT IS.

Moving on, I suggest that you should try to work with JPAN's hacked engine, as I can see that this and that combined would be a total FireRed hacker heaven. And I saw something about the integration with JPAN's save block hack, too, so this would be a good option.

You still do the work, though, so it's really up to you.

While it would certainly be possible to include JPAN's hack with this, I refuse to do so without JPAN's say so. I'm only including the save block hack because it's 100% necessary for it to work. And I made sure to credit JPAN for it. I never said I made it. :)

The formes are a pain in the rear end to do, but are possible. I still can't find the type(s) in the Pokémon's data, so I can't see any way of doing the type changing formes right now, except to force a species change without evolving but have it have very similar data.

Gen 5's evolution type (Karrablast -> Escavalier when traded with a Shelmet or Shelmet -> Accelgor when traded with a Karrablast) works with IN GAME TRADES only at this time. I cannot test how the game works with proper trading, and as such, can make NO guarantees that it will work. I expect that it will not work, but feel free to give it a try.

Use VBA-link to test the trading. Should work if in-game ones work though I think.

I tested it (in spite of VBA-Link crashing every 2 seconds) and the evolution does work. Hooray for me! :)

hi sir tomato my password is syvniti
June 5th, 2011, 04:09 AM
For those who've been asking, I will probably release this publically as a patch when I've finished inserting all the data. This will mean it can't be used on a hack which is in progress. I'll most likely highlight the significant data in the patch so that people can copy it over to their roms if they want to use it on an already started hack. Of course, the patch will only be for BPRE as I simply don't have the time to sit and translate all the data and limiters over to another rom.

Current Patch Progress:
Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (42% - Up to and including Servine in - No shiny pallets though)
Pokémon Data (100%)
Pokédex Entries (90% - Need to edit scale for comparison for nearly all, but everything else is in)
Movesets (0%)
TM/HM Compatibilities (0%)
Evolution Data (95%)
Evolution Types Added (100%)
Icons (0%)
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)

As you can see, there is a LOT of stuff to be done before I can truly call it complete. The routines work, yes, but that's about it.

Hey Yo, Is there any updates? What are the percentages currently?

Full Metal
June 5th, 2011, 09:14 AM
^ Dude. o_O
You're ... back! :)
I second this question.
My keyboard fingers and hacking brains are getting itchy. >.<

Pokeshadow13
June 5th, 2011, 06:43 PM
Hi, in the simple questions forum i asked this question:

"Hi I know this will probably sound stupid as I'm about to ask the opposite of what most pokedex related questions are but since I can't figure it out and there seem to be no posts on it I'll still ask it:

How do I REMOVE Pokemon from the pokedex (so there are only #1-151) and so that when you catch all of them (only the 151) you can get your diploma?

Also I would like to add a bonus Pokemon (Missingno.) that you do not have to catch to receive the diploma.

The rom I am attempting to hack is Pokemon FireRed US (CoolROM)

This would be greatly appreciated^^ (if you can help me of course)

Thanks in advance (map ;P)

Pokeshadow13"

Well I got the same answer every time- don't give them the national dex and don't put the other Pokemon wild. But I want to actualy delete them from the game. Since you seem to be the only pokedex post I guess you might be able to help.

Well thanks in advance.

Pokeshadow13

Full Metal
June 5th, 2011, 06:56 PM
Well. You would have to change all the pointers to references of each pokemon in every table to NULL, and set a few bytes in the asm-codes to remove the limiting factors of the in-built code. :)
*edit* But seriously. It's way easier to just not give them the national pokedex and not worry about removing the pokemon's data. What happens if a player gets in a battle with another game? HM?

Paupir
June 9th, 2011, 01:47 AM
Won't you reveal how you got the evolutionary stones working, or where the routine is? :P
It's my greatest foe.

Jambo51
June 10th, 2011, 12:56 AM
Won't you reveal how you got the evolutionary stones working, or where the routine is? :P
It's my greatest foe.

If I could remember how I did it, I would! The Dawn Stone is still slightly buggy, FYI, so I'll need to fix them anyway!

On a related note, I currently cannot access Pokecommunity from my PC, so there may be a delay on any information, requests and any patch itself.

MKSSB
June 11th, 2011, 02:46 PM
Jambo told me to post this progress update as he can't enter to Pokécommunity.

Current Patch Progress:
Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (42% - Up to and including Servine in - No shiny pallets though)
Pokémon Data (100%)
Pokédex Entries (90% - Need to edit scale for comparison for nearly all, but everything else is in)
Movesets (0%)
TM/HM Compatibilities (5%)
Evolution Data (99%) - Need to edit Eevee's reading to support 7 evos instead of 5
Evolution Types Added (99%) - Dawn Stone is slightly bugged
Icons (100%) - Might add a few extra pallets to make it work better
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)
New Base Exp System (80%)
Item Use Coordinates (0%)

Jambo51
June 17th, 2011, 07:51 AM
Jambo told me to post this progress update as he can't enter to Pokécommunity.

Current Patch Progress:
Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (42% - Up to and including Servine in - No shiny pallets though)
Pokémon Data (100%)
Pokédex Entries (90% - Need to edit scale for comparison for nearly all, but everything else is in)
Movesets (0%)
TM/HM Compatibilities (5%)
Evolution Data (99%) - Need to edit Eevee's reading to support 7 evos instead of 5
Evolution Types Added (99%) - Dawn Stone is slightly bugged
Icons (100%) - Might add a few extra pallets to make it work better
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)
New Base Exp System (80%)
Item Use Coordinates (0%)

I didn't TELL you to, I asked you to :P
Anyway, here's a newer update for this:

Current Patch Progress:
Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (42% - Up to and including Servine in - No shiny pallets though)
Pokémon Data (100%)
Pokédex Entries (90% - Need to edit scale for comparison for nearly all, but everything else is in)
Movesets (6%)
TM/HM Compatibilities (5%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (100%)
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)
New Base Exp System (100%)
Item Use Coordinates (0%)

A big thanks to "hi sir tomato my password is syvniti" for his help with the Icons!
Also, Apologies if this post looks weird, but I'm having to post in a weird way XD

Gamer2020
June 17th, 2011, 10:05 AM
Icons (100%) - Might add a few extra pallets to make it work better
New Base Exp System (100%)
Item Use Coordinates (0%)

1) Aren't there three palletes in the DS games as well? In fact the same ones?

2) New base EXP system? That is the same to isn't it? There is no need to update these things?

3) Jack confused =0

Full Metal
June 17th, 2011, 10:51 AM
^ I think he means for things like the mossy rock for leafeon and the cold rock for glaceon?

Jambo51
June 17th, 2011, 11:35 AM
1) Aren't there three palletes in the DS games as well? In fact the same ones?

2) New base EXP system? That is the same to isn't it? There is no need to update these things?

3) Jack confused =0

1) Yeah, DPPt has 3 icon pallets, all of which are the same as FR's, this much is clear. However, the Unova Pokémon clearly have a new set of pallets available to them, as there are quite a few icons which look dodgy (Snivy, Pansage/Simisage) or downright wrong (Munna, Basculin) in FR's pallets.

 
2) The old system only supported a byte for the base exp, giving us a ceiling value of 255. I needed higher as quite a number of Generation 2-5's legendaries got a rethink of base exp in Gen 4, which requires a half word. I made a table of a half-word for each species, separate from the existing data. Simple as that.

 
3) When using an item on a Pokémon in FireRed, the game plays a little animation. The co-ordinates I refer to are where on the screen the item gets "used on". I believe they are offsets from the centre of the screen, although I would need to find the table again to be sure.

Gamer2020
June 17th, 2011, 11:39 AM
1) Yeah, DPPt has 3 icon pallets, all of which are the same as FR's, this much is clear. However, the Unova Pokémon clearly have a new set of pallets available to them, as there are quite a few icons which look dodgy (Snivy, Pansage/Simisage) or downright wrong (Munna, Basculin) in FR's pallets.


You sure you dumped them with the right pallete? The ones I have look ok so idk =/

Jambo51
June 18th, 2011, 11:10 AM
You sure you dumped them with the right pallete? The ones I have look ok so idk =/

Turns out you were right. I replaced a good few sprites with new ones, and there was a vast improvament in the colouring of those sprites. I still feel that there are a few which could do with a new pallet, but it's a low priority, if a priority at all.

Gamer2020
June 19th, 2011, 03:31 PM
Turns out you were right. I replaced a good few sprites with new ones, and there was a vast improvament in the colouring of those sprites. I still feel that there are a few which could do with a new pallet, but it's a low priority, if a priority at all.
Yay! =) Like I said before you are better off just using the question mark images cause most likely people will want to use differemt sprites. some people may even want to use fakemon.

Jambo51
June 19th, 2011, 03:58 PM
Yay! =) Like I said before you are better off just using the question mark images cause most likely people will want to use differemt sprites. some people may even want to use fakemon.

I'll post the necessary info for people to extend upon this hack should they wish to, for fakemon/new generations if and when they come along. But I'm coming round to your way of thinking tbh, in that it might not be a bad idea just to release a basic patch with just the asm edited to support extra pokémon, but without the actual Pokémon included.

Gamer2020
June 19th, 2011, 04:19 PM
I'll post the necessary info for people to extend upon this hack should they wish to, for fakemon/new generations if and when they come along. But I'm coming round to your way of thinking tbh, in that it might not be a bad idea just to release a basic patch with just the asm edited to support extra pokémon, but without the actual Pokémon included.

I mean in my opinion it's better to just release the "how to" then an already made patch so people can actually learn. But it's up to you and the majority of people are just lazy and would only be interested in the patch version. Either way I do hope people actually credit you and appreciate what you have done because you have put a lot of work into adding all the data for the Pokemon.

Meta Paradox
June 19th, 2011, 09:34 PM
Why don't you release a do it yourself first then release a 5th Gen patch later on?

Jambo51
June 20th, 2011, 04:22 AM
Why don't you release a do it yourself first then release a 5th Gen patch later on?

Very few people will acually be able to follow a tutorial for this through as there is a LOT of related data and asm to go with it.

It would take me longer to actually write the tutorial than to finish the patch now...

Paupir
June 20th, 2011, 05:03 AM
I know you're doing this for yourself too, so you should just continue with a patch and maybe write up the basic info on what to do if you were to extend it, as planned :)

Though really, I'd want to port this to Emerald, so I'd somewhat prefer a nice long tutorial even if it was hard to follow XD - Was just planning on working with whatever you released and reverse engineering from there (if need be) to try porting it.

You're doing a stunning job, so no one minds waiting a little longer~

Hi-Techneon
June 20th, 2011, 05:35 AM
Just a suggestion, but once this patch is finished, you (or somebody else) could make a tool for quickly adding Pokémon etc, which would help beginning hackers alot (as most of them can't even hex edit).

Anyway, you're doing a great job, good luck!

Shiny Quagsire
June 20th, 2011, 09:17 AM
Very few people will acually be able to follow a tutorial for this through as there is a LOT of related data and asm to go with it.

It would take me longer to actually write the tutorial than to finish the patch now...

I dunno, I'm more or less, looking into adding a few extra Pokemon instead of the whole Pokedex. Maybe instead of a big tutorial document, just to a quick run-through of the different limiting routines and how to patch them, and state the tables to repoint. That's all I'd need to get it. Then maybe later on you could make a more detailed document. But with basic innformation I could make a patcher to insert more Pokemon at ease, or one for your patch to things don't interfere with pre-existing data. Your choice. :)

Gamer2020
June 20th, 2011, 10:03 AM
Just a suggestion, but once this patch is finished, you (or somebody else) could make a tool for quickly adding Pokémon etc, which would help beginning hackers alot (as most of them can't even hex edit).

Anyway, you're doing a great job, good luck!

Maybe. That's not really necessary if a patch get's released. Let's all just let Jambo51 do what he want's to do. It's his work not ours.

@Jambo51 Give me a couple of days. I got the move tutors loading correctly is seems so I should be able to have it edit all moves by next release.

Jambo51
June 20th, 2011, 11:53 AM
I dunno, I'm more or less, looking into adding a few extra Pokemon instead of the whole Pokedex. Maybe instead of a big tutorial document, just to a quick run-through of the different limiting routines and how to patch them, and state the tables to repoint. That's all I'd need to get it. Then maybe later on you could make a more detailed document. But with basic innformation I could make a patcher to insert more Pokemon at ease, or one for your patch to things don't interfere with pre-existing data. Your choice. :)

I might forward that info to you, but, like the already existing rom, if you don't want to use a Pokémon, just don't use it. XD
But the option to use any of the 649 existing pokémon is there. The option to add fakemon with dex entries/movesets etc is also there, as I WILL post the information needed to extend the dex further if people so wish. The main thing here is, aside from containing extra pokémon, it also allows hackers to add fakemon without overwriting any old pokémon. Win/Win no?



Maybe. That's not really necessary if a patch get's released. Let's all just let Jambo51 do what he want's to do. It's his work not ours.

@Jambo51 Give me a couple of days. I got the move tutors loading correctly is seems so I should be able to have it edit all moves by next release.


Fantastic. I really don't have much left to do now, so that's great news :)

I'll put up information on having a working regional dex in FR once i've finished this patch, allowing people to pick and choose what Pokémon they want in their Pokédexes.
Obviously, unless you actually award the National dex, you will never see it, and this patch already contains national dex evo block fixes (Golbat -> Crobat for example, will happen without the national dex now).

In all seriousness, it's really quite easy to do, so I hope people will make use of this patch and the info (when I post it).
It should help hacks look more professional, as we aren't forced to stick with the predetermined order in FR.

I'm already aware that Gamer2020's tool has a Pokédex order editor in it, but the way FR is designed, it will never actually read the regional data.
It requires careful editing of the routines to make sure that it retains backwards compatibility with the bat s**t mental ordering of the Hoenn Pokémon in the rom. (Their Pokédex entries are in National dex order, but their in game ID's are all over the place XD)

EdensElite
June 21st, 2011, 11:27 AM
Hey, I'm a newb and i've seen quite a few useful threads that are just like use this code. But how am i supposed to use it/implement it?

Jambo51
June 21st, 2011, 11:46 AM
Hey, I'm a newb and i've seen quite a few useful threads that are just like use this code. But how am i supposed to use it/implement it?

If you're talking about ASM code, look at this (http://www.pokecommunity.com/showthread.php?t=117917#ASM1) very helpful post by HackMew.
It has all the basics of inserting ASM into your rom in it.

Also, don't post questions like this in R&D posts as it will be regarded as spam.

On topic, I need to start investigating the breeding mechanics in the game to "fix" the breeding for the new Pokémon. Does anyone have any useful places to tell me about for this?

Meta Paradox
June 22nd, 2011, 03:24 AM
What about if i DON'T want the evo fixes with the National Dex or anything like that, or what if I wanted to change some evolutions. How wiill it be made, guys?

Jambo51
June 22nd, 2011, 12:23 PM
What about if i DON'T want the evo fixes with the National Dex or anything like that, or what if I wanted to change some evolutions. How wiill it be made, guys?

The evos are editable using any tool in theory. They'll just not show the relevant data for the evolution type.

I'm not 100% sure what you mean by the national dex evo fix stuff. If you mean you want the evolutions still to be blocked unless you have the national dex, that's easy enough. I'll post the info when the patch becomes available.

EdensElite
June 25th, 2011, 12:42 PM
I was wondering if it is possible to add the in-between entries (between celibi and hoenn) to the pokedex?

Jambo51
June 26th, 2011, 01:15 AM
I was wondering if it is possible to add the in-between entries (between celibi and hoenn) to the pokedex?

This is surprisingly easy to do, but there's a lot of limiters which need editing for it to work. I don't have them on me atm, but i'll edit this post when I get home from work and post the information.

EdensElite
June 26th, 2011, 12:54 PM
Ok Thanks Jambo :)

And since the topic is included in Pokedex Hacking, what are some of the best tools for hacking poxedexes as these are also scarce.

(Sorry If this is annoying and Spammy :/)

Full Metal
June 26th, 2011, 02:11 PM
Question:
If I were to write a tool, that would look up the names of a pokemon, where could I find an accurate value of the table for pokemon names?

Mr.Pkmn
June 26th, 2011, 02:50 PM
Question:
If I were to write a tool, that would look up the names of a pokemon, where could I find an accurate value of the table for pokemon names?
Set it as the default one and then let the user choose the correct pointer

Full Metal
June 26th, 2011, 03:40 PM
Hey genius, you wouldn't happen to know what the default pointer is, would you?

Vapper3
June 26th, 2011, 06:03 PM
Hi!
Great work with this Jambo, thanks!
Also, I know the FR patch isn't even done, but how hard would it be to do this with Ruby?
Vapper

Gamer2020
June 26th, 2011, 06:50 PM
Hey genius, you wouldn't happen to know what the default pointer is, would you?
um I think you can use one of the pokemon limiters to know the number of names and load a pointer from the ROM for the location.

I just use an ini cause there are a lot of pointers and limiters.

Jambo51
June 28th, 2011, 12:28 PM
Hi!
Great work with this Jambo, thanks!
Also, I know the FR patch isn't even done, but how hard would it be to do this with Ruby?
Vapper

I took one look at Ruby's code before and gagged. Fire Red's THUMB code is a mess, but Ruby's is something else. It's a horrid mess of useless lines of code mixed together with code which actually works.

I do wonder sometimes if the lack of efficiency was actually a concious decision by Game Freak to have the game run at 60 fps, or whether they just had a REALLY bad C compiler, but so much of their code is just utterly unnecessary!

Anyway, to answer your question, I won't be porting it any time soon, and I doubt very much that any one else will manage to do so. There are only a handful of hackers with enough experience to pull this off, and afaik, they all work with either FR or Emerald.

SuperJOCKE
July 1st, 2011, 07:18 AM
Man, this sounds so awesome.
It would be even more awesome if you could expand it even more yourself to add your own fakemons. Looking forward to it, I really hope you make a patch. Amazing job. ;) I just really hope you release it for public use though... :/

EDIT:
Just have two questions:
1. How about newer abilities? Like Porygon-Z can only have new abilities (Download and Adaptability), have you inplented them with those effects, if it's possible?
2. Can we change the location of the moss and ice rocks if you have inplented those?

Jambo51
July 10th, 2011, 06:18 PM
Man, this sounds so awesome.
It would be even more awesome if you could expand it even more yourself to add your own fakemons. Looking forward to it, I really hope you make a patch. Amazing job. ;) I just really hope you release it for public use though... :/

EDIT:
Just have two questions:
1. How about newer abilities? Like Porygon-Z can only have new abilities (Download and Adaptability), have you inplented them with those effects, if it's possible?
2. Can we change the location of the moss and ice rocks if you have inplented those?

Apologies for the lack of reply, only just noticed this post.

1) For now, they have been replaced with similar-ish abilities, or use abilities of their pre-evolved forms in gen 3. Eg, Porygon-Z uses Porygon/Porygon2's ability. In the long term, i'll look to add the new abilities.

2) Easily enough, yes. As the evolutions aren't actually triggered by proximity to a certain tile, but are actually triggered by levelling up on a certain map, they are easily enough edited. And it would allow us to have more than those 2 specific reasons for evolution.

Finally, yes. Fakemon could be easily added using this hack, but lemme finish the existing code first huh? :P

theavenger
July 17th, 2011, 04:59 AM
hi first of all its great to see somebody finally a person able to extend the dex
and second i thing the tools in here might help you even though i don't keep my hopes up here goes htt p: // swamperttools . webs . com / downloads . htm
i have a question:can you add more place to get all the gamefreak pokemon and yet still have fakemons like opining a 1000 seen/cought flags to get the ultimate hack i am planing for



p.s:sorry for bad grammer and messed up link not enough posts just delete the spaces

Jambo51
July 17th, 2011, 05:31 AM
hi first of all its great to see somebody finally a person able to extend the dex
and second i thing the tools in here might help you even though i don't keep my hopes up here goes htt p: // swamperttools . webs . com / downloads . htm
i have a question:can you add more place to get all the gamefreak pokemon and yet still have fakemons like opining a 1000 seen/cought flags to get the ultimate hack i am planing for



p.s:sorry for bad grammer and messed up link not enough posts just delete the spaces

The POKÉDEX will only support 1000 Pokemon, with a rewrite (from 0 - 999). The rom can support (ignoring lack of space) 65356 Pokémon.

~Anbuja
July 17th, 2011, 06:16 AM
I just wanted to say that i think what u are doing here jambo is just great!!:P
with this u will help not just some but i think every pokemon hacker and 999 slots is even too much:)
keep it up and i hope that u will release it as soon as possible!

theavenger
July 17th, 2011, 06:35 AM
The POKEDEX will only support 999 Pokemon. The rom can suppport (ignoring lack of space) 65356 Pokemon.

thanks thats just what i needed to hear,olso i hope the tools helped you

Learath2
July 17th, 2011, 09:03 AM
LOTS of slots you have there :P you are cool this will help nearly everyone.

shinyabsol1
July 17th, 2011, 06:00 PM
Hey Jambo51, this looks absolutely amazing! Can't wait for the release!

I also have a few questions:

1). Will this work with JPAN's hacked engine?

2). Earlier in this thread you mentioned that this (at least the patch) will not work with a hack already in progress...why is that?

theavenger
July 18th, 2011, 05:50 AM
how many of the original pokemon will you insert and if its not a problem whats the progress

Jambo51
July 18th, 2011, 06:34 AM
Hey Jambo51, this looks absolutely amazing! Can't wait for the release!

I also have a few questions:

1). Will this work with JPAN's hacked engine?

2). Earlier in this thread you mentioned that this (at least the patch) will not work with a hack already in progress...why is that?

1) It won't work with the patch version, but if you user the installer tool that comes with it, I struggle to see why it won't.

2) Because the patch is based on an otherwise clean FireRed rom. It would most likely overwrite or remove any hacked in data.

how many of the original pokemon will you insert and if its not a problem whats the progress

All of the Pokémon, up to and including Genesect, will be present and as close to correct as I can manage. Bearing in mind that a lot of the abilities and moves aren't available in gen 3, I'm having to pick placeholder abilities and replacement moves.

theavenger
July 18th, 2011, 02:27 PM
are you deviding them into national dex and kanto dex or not

Jambo51
July 18th, 2011, 02:36 PM
are you deviding them into national dex and kanto dex or not

Why would I place the Unova or Sinnoh Pokémon in the Kanto Dex? That really doesn't make any sense. That said, it is possible to have them in a regional dex if you want them.

oxenh
July 19th, 2011, 04:30 PM
this will only be able to apply to pokemon fire red u?
and a very noobish question
how i edit the value to allow to pokemon to evolution without the national dex?

Full Metal
July 19th, 2011, 05:08 PM
^ You won't.
If you've read the thread, you would notice that he's doing all of that for you.

oxenh
July 19th, 2011, 06:41 PM
^ You won't.
If you've read the thread, you would notice that he's doing all of that for you.

i read the whole topic, but sometimes i don´t fully understand all the info posted because english is not my native language
thanks for clarify that to me

Late
July 20th, 2011, 09:53 AM
Haven't visited Pokécommunity for some time but earlier today I noticed this thread but didn't have enough time to read it as I had to go to work. Now I read every page from this thread as this is very exciting. I appreciate your work and I'm really waiting for the patch, I think it would get me back to the hacking business. I'd like to help but I can't do anything helpful as I don't understand anything about ASM or even HEX editing (I haven't even tried ever as it seems that I can't get anything ready, I always stop at half-way or before, that's the only thing I don't like about myself...) I'm really amazed about how you made every evolving possible and whole expanding thing. I also read that you're going to add new abilities sometime, so I wanted to ask: "Are you able to make all the new moves from newer games?" That would be awesome too but then you'd need also the animations for the attacks so it wouldn't be that fast to do. I have a lot more questions in my mind but I think I have bothered you already too much so I'll leave them for next time :) I also downloaded your hack, going to try it now.

Jambo51
July 20th, 2011, 02:33 PM
Small request, break your posts up into paragraphs. Makes them easier to read! lol.

To answer your questions, the abilities will certainly be added if I/we can figure out how to, as they're just basic ASM routines to perform little tweaks to the battle stats by and large.

The moves certainly won't be in any version released in the near future, but I may look into adding the moves at a later stage.

Nonsense, ask as many questions as you like, and i'll do my best to answer them!

As to you playing my hack, it's now horrendously outdated lol. Not worked on it for almost a year, and that was all before I learned ASM.

Late
July 20th, 2011, 09:58 PM
I forgot the paragraphs as I didn't mean to write that much :S

I was going to ask about how long you've worked with ASM but it looks like I got already some kind of answer.

Then about movesets: Do you make Generation IV and V Pokémon movesets by just getting rid of moves from IV and V, so they just have moves up to Gen III or are you going to make some kind of fixes?

Did you get the form changing done yet? I read about the problems with type changing at the same time and some other things you mentioned but I'm not entirely sure if you said if it was completed already.

And the final question. I know that you have a big project and it'll take a long time to do but do you have any kind of guess when the first patch is going to be available if you keep the same pace?

Jambo51
July 21st, 2011, 11:11 AM
As to the movesets, I simply try to replace the gen 4 and 5 attacks with similar gen 3 attacks.

The forme changing is still not working. Need to dedicate more time to research it.

At current progress rates (as I'm taking a short break from doing it XD) never.

But if I were to go back to it hammer and tongs (so to speak), It'd probably take me about 2 months to get everything working.

Current Patch Progress:
Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (80% - Missing Shiny Pallets for Unova Pokémon)
Pokémon Data (100%)
Pokédex Entries (100%)
Movesets (0%)
TM/HM Compatibilities (0%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (100%)
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)
New Base Exp System (100%)
Item Use Coordinates (0%)
Gen 4/5 Moves (0%)

Hopefully that'll help to whet some appetites... :P

EDIT: Bugger. Double posted...

Wiznatts
August 11th, 2011, 09:54 PM
First off, let me just say that this is amazing work. This kind of thing is what really interests me when it comes to ROM hacks, unfortunately I don't have the skills to do much contributing.

Like you said earlier, adding the knew moves shouldn't really be a huge priority, but there is something you could do instead in the mean time. There are plenty of moves that have the exact same effects (tail whip, leer, etc.).

As such, you could edit the data for those moves to be new moves. This is easy in and of itself. However, you'd need to edit which animations the game calls when the edited attacks are used (so X-scissor doesn't look like Howl). While I don't have the knowledge to even know where to start on that I'm sure you could figure it out.

Additionally, I had a question about the sprites you're including. Over on another forum, I've been leading a project to create updated sprite sheets for all 649 Pokemon. Personally I don't like the way Gen 5 back sprites look in the Gen 3 games since they were meant to be blown up by Black and White which is what I assume you've used. As such, I'd like to offer the ones that we've made as we have all the Gen 5s (except maybe formes) manually recolored/resized as necessary to fit the Gen 3 perspective, though I still have to edit the palettes for the shinies, as well as almost all of the others.

Jambo51
August 12th, 2011, 12:30 AM
Yeah, I mentioned in a post above that I wasn't best pleased with the backsprites in particular, but as i'm not a spriter, there's not much I could do about it. The same is true of most of the 4th gen backsprites. So if you're offering better backsprites, i'll happily use them, and give credit.

Also, since the last post, i've started inserting the new moves from Gens 4 & 5 with some success, and I am working on a preliminary Physical/Special split, since the existing one is buggy, to see if I can get it to work properly.

Tests are looking good so far, with Dark Pulse nearly 1HKOing an Octillery, but only taking a Shuckle down to about half health.

metapod23
August 12th, 2011, 06:18 AM
Yeah, I mentioned in a post above that I wasn't best pleased with the backsprites in particular, but as i'm not a spriter, there's not much I could do about it. The same is true of most of the 4th gen backsprites. So if you're offering better backsprites, i'll happily use them, and give credit.

Also, since the last post, i've started inserting the new moves from Gens 4 & 5 with some success, and I am working on a preliminary Physical/Special split, since the existing one is buggy, to see if I can get it to work properly.

Tests are looking good so far, with Dark Pulse nearly 1HKOing an Octillery, but only taking a Shuckle down to about half health.

I just wanted to compliment you on the awesome work you're doing Jambo. When this gets released, everyone will be using it, and you deserve a hell of a lot of credit for it.

Late
August 12th, 2011, 07:38 AM
I already thought about when I have to post something here before this thread is too old but now I see there's more people again who appreciate you and your work. I by myself don't want you to stop now that you're this far in something so amazing!

So, it seems you're working again. How many new moves have you already included? And have you just made how they work without animations or have you somehow made the animations to them already?

Wiznatts
August 13th, 2011, 10:45 AM
I would be more than happy to give you the back sprites. The ones I have use the B/W pallets. So for Gens 1-3 I just recolored the current back sprite (except for a couple: Magnemite and Feraligatr because Mag has a couple extra colors and Feraligatr doesn't have a tail). Then I took the Gen 4 back sprites and just shrunk them to 64x64 by hand and recolored. Some one else on our forum made the backs for Gen 5, so I still have to go through them a little bit. The front sprites I have were not made by me, but were pulled from B/W, the 493 project here, as well as recolored versions of some sprites from a couple hacks here, I think Lilac and maybe Light Platinum.

Here are examples of both the fronts and the backs that I have

http://i1197.photobucket.com/albums/aa432/Wiznatts/Hack%20Screens/Gen_1_Part_1.png
http://i1197.photobucket.com/albums/aa432/Wiznatts/Hack%20Screens/Gen_1_Part_2.png

http://i1197.photobucket.com/albums/aa432/Wiznatts/Hack%20Screens/back-5.pnghttp://i1197.photobucket.com/albums/aa432/Wiznatts/Hack%20Screens/backShiny-5.png http://i1197.photobucket.com/albums/aa432/Wiznatts/Hack%20Screens/back-4.pnghttp://i1197.photobucket.com/albums/aa432/Wiznatts/Hack%20Screens/backShiny-4.png http://i1197.photobucket.com/albums/aa432/Wiznatts/Hack%20Screens/back-3.pnghttp://i1197.photobucket.com/albums/aa432/Wiznatts/Hack%20Screens/backshiny-3.png
With the Originals for reference:
http://archives.bulbagarden.net/media/upload/3/3e/Spr_b_4d_387.png http://archives.bulbagarden.net/media/upload/3/3e/Spr_b_4d_388.png http://archives.bulbagarden.net/media/upload/3/3e/Spr_b_4d_389.pnghttp://archives.bulbagarden.net/media/upload/3/38/Spr_b_4d_388.png http://archives.bulbagarden.net/media/upload/c/ce/Spr_b_4d_389.png

Jambo51
August 14th, 2011, 09:52 AM
Yes, I'll glady use these sprites if you let me. They are of much better quality (without a shadow of a doubt) than the existing sprites in my rom, and using a full set of BW sprites should work really well, as long as they're properly resized of course.

Chaos Rush
August 16th, 2011, 02:57 PM
Just letting you know that I'm currently working on properly resizing all Pokemon sprites with the same ratio, all saved in files ready to be used with Wichu's sprite editor:

http://img809.imageshack.us/img809/8315/projectg.png


Some are smaller than they are in Gen III but the reason why I did that is to keep all the sprites resized within the same ratio. This is because Pt/HG/SS/B/W Gen IV/V, they tried to make the size of each sprite relative to the Pokemon's actual size, which is why Buizel's Platinum sprite is significantly smaller than it's D/P sprite.

Also in the sprites that Wiznatts posted above, he referenced the 493 Project, which I am the creator of. I have abandoned that because I resized the sprites on an individual basis rather than all the same ratio. What I'm doing now is making them all the same ratio in order to keep the size relativity that was introduced in Platinum.

Also, if you noticed, the color palette I use is the one that most closely resembles it's Sugimori art. Sometimes none of the D/P, Pt, HG/SS, or B/W sprites uses colors that match the Sugimori art, so I use a custom color palette, such as Squirtle, Butterfree, Nidoqueen, Paras, Parasect, etc...

Jambo51
August 17th, 2011, 10:41 AM
Could you possibly give me an estimate on how long it would take you to finish them. I'm currently in the process of inserting new moves and movesets, so it's not a huge rush, but a timescale is always helpful. :D

I'm currently researching the battle scripts to see if I can find out how to make the new moves match the real thing in gen 5, if possible.

If I could pull that off, it really would be like playing gen 5 with gen 3's engine!

Mr.Pkmn
August 17th, 2011, 02:20 PM
If I could pull that off, it really would be like playing gen 5 with gen 3's engine!
Seriously, this would be horrible. If people want not only the new pokes, but also the new moves/items/abilities they should play a gen 5 hack directly.

I'm not saying you shouldn't do it, but not just for this purpose

Jambo51
August 17th, 2011, 02:23 PM
I know what you mean, but it would be an achievement if I could pull it off, and again, it allows people plenty of choice for hackers.
Everything except the new items will be available in my patch when i'm done with it. Lots of work to go yet.

NarutoActor
August 17th, 2011, 06:19 PM
Seriously, this would be horrible. If people want not only the new pokes, but also the new moves/items/abilities they should play a gen 5 hack directly.

I'm not saying you shouldn't do it, but not just for this purposeHow would this be horiable? It's your choice to use it or not. As hackers and players we want to maximize the possibilities and features; not limit our selfs.

Chaos Rush
August 17th, 2011, 07:16 PM
Could you possibly give me an estimate on how long it would take you to finish them. I'm currently in the process of inserting new moves and movesets, so it's not a huge rush, but a timescale is always helpful. :D

Um well, sorry, but it's probably gonna take at least another year. And for now I'm only doing a select 210 Pokemon for my rom hack, but as I start working on other projects I'll eventually have to do all 493.

metapod23
August 18th, 2011, 07:50 AM
Seriously, this would be horrible. If people want not only the new pokes, but also the new moves/items/abilities they should play a gen 5 hack directly.

I'm not saying you shouldn't do it, but not just for this purpose

I disagree. 'Twould be epic.

Late
August 18th, 2011, 11:05 AM
Seriously, this would be horrible. If people want not only the new pokes, but also the new moves/items/abilities they should play a gen 5 hack directly.

I'm not saying you shouldn't do it, but not just for this purpose

I disagree. It would be a nice achievement to get these things work. It's also a lot easier to hack Gen III games and I know a lot of people who'd be glad to get every Pokémon to their hacks. And as Jambo knows how to make all these things, you can maybe get some help from him to get your own made moves/items/abilities and other stuff to your hack to make it something personal.
+ I can't play Gen 5 games on my phone :)

romancandle
August 18th, 2011, 12:01 PM
Current Patch Progress:
Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (80% - Missing Shiny Pallets for Unova Pokémon)
Pokémon Data (100%)
Pokédex Entries (100%)
Movesets (0%)
TM/HM Compatibilities (0%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (100%)
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)
New Base Exp System (100%)
Item Use Coordinates (0%)
Gen 4/5 Moves (0%)


This might seem like a dumb question, but will all these patches be available individually or will they all be in one? I ask because I'm highly interested in the Evolution parts.

Full Metal
August 18th, 2011, 01:54 PM
^ I believe there's a thread about hacking evolutions in FR...which Jambo has posted in. :P

romancandle
August 19th, 2011, 09:48 AM
^ I believe there's a thread about hacking evolutions in FR...which Jambo has posted in. :P

Oh, I saw that. The project I'm working on and my experience with hacking created a "Blue Screen of Death" in my brain when I read the wall of text. If it's not easily available for my to let Onix evolve when leveling up with Iron Defense, then it's not really important enough for my FireRed re-up for my friends.

Wiznatts
August 25th, 2011, 10:52 AM
Saw the latest video you posted to Youtube, and I must say, great job figuring out how to switch the form types. Switching the sprites and icons should be simple in comparison. Also I'm assuming you made the Gracidea a hold item just to test it right? Anyway, I'm putting the sprites together and was wondering if there is a specific format you wanted. As in, do you want all of them in sheets, separate, or the way Chaos had them? Plus there are a few oddities that I'm not sure about such as Spinda and Castform. Just let me know and I'll get back to work on them.

Jambo51
August 26th, 2011, 11:44 AM
I would prefer to have Front Sprite with normal pallet and backsprite with shiny pallet, as 2 separate .png files for each species (or forme).

I didn't realise that Gracidea wasn't a hold item until after i'd made the video. Just for accuracy, what exactly is it? Is it a "use" item? IE, I select Use then select Shaymin? I don't know how to make such items yet, as this item wouldn't close the bag, then run a script like the items we have been able to make so far.

I DO know however, that Shaymin's forme also carries time elements, so you don't need to worry about telling me that!

For these formes to work, I need to find/create some sort of free space inside the Pokémon data, somewhere to store for each individual pokémon what forme it currently has. We can't use Castform's way of doing it, because Castform is strictly only in battle, while Deoxys' style simply reads the game's ROM header to determine what sprite it should load.

I've looked for a while with no success. The only pseudo-free space I could find were bits and bytes here and there and the contest data (which is technically free space on FR). Any thoughts?

Chaos Rush
August 27th, 2011, 12:02 PM
I'm just curious but did you insert all the sprites at offsets right next to each other, or in random free space locations in the rom? Because if I ever use this, I'm probably going to re-insert all the sprites since I absolutely cannot stand shrunken sprites that haven't been cleaned up properly. Normally I would just go to the offset of the first sprite (such as Bulbasaur) and just replace all the bytes with a crapload of FF bytes, but if you've placed the sprites randomly throughout the rom that would be harder for me to do.

The main reason why I would do this is because of free space. Alternatively, it would be nice if you could release a patch with no sprites inserted.

Full Metal
August 27th, 2011, 05:31 PM
I'm just curious but did you insert all the sprites at offsets right next to each other, or in random free space locations in the rom? Because if I ever use this, I'm probably going to re-insert all the sprites since I absolutely cannot stand shrunken sprites that haven't been cleaned up properly. Normally I would just go to the offset of the first sprite (such as Bulbasaur) and just replace all the bytes with a crapload of FF bytes, but if you've placed the sprites randomly throughout the rom that would be harder for me to do.

The main reason why I would do this is because of free space. Alternatively, it would be nice if you could release a patch with no sprites inserted.

I believe a simple python script would suffice to replace all the sprites with FF bytes, as well as dump a list of pointers to repoint [ for use with unlz.gba ]

Wiznatts
August 31st, 2011, 06:25 PM
The Gracidea is a Key Item that is used on Shaymin. And like you said, it reverts at night. One thing that is sort of minor, Shaymin-S also reverts when frozen. Taken from Serebii Pokedex entry on shaymin.

Chaos Rush
September 3rd, 2011, 09:06 PM
I would prefer to have Front Sprite with normal pallet and backsprite with shiny pallet, as 2 separate .png files for each species (or forme).

That method is faulty as some backsprites have details that aren't present in front sprites, which can lead to colors that are only shown in the backsprite. An example of this would be Budew. The sheets I'm arranging are to be used with Wichu's Sprite Editor (http://www.pokecommunity.com/showthread.php?t=196143), which is very easy to use, and has no faults. It even lets you import an entire folder of Pokemon sprites, as long as each file is named by index number.

Jambo51
September 4th, 2011, 01:58 AM
Ah yes. I've used this sprite editor.

Well, if you're naming them be index, make sure you name them by in game index order rather than national dex order.

tinix
September 5th, 2011, 03:39 AM
Hello,

I have been trying to extend pokedex to show those extra 25 slots (387-411) which I have partially managed to do.
Problem is that pokedex freezes when trying to view anything, exit in national mode.
I think I missed out some limiters. I used this list http://pastebin.com/eATb3Sek and tried to set everything below 0x19B to 0x19B (that were not commented it errors) but the freez still occurs. Which of those are neede to be set for pokedex to work?

Jambo51
September 6th, 2011, 03:00 AM
There's a Malloc (Memory Allocation) in the lead up to the Pokédex routine. If you don't hack this to have the correct length of memory, the ROM will simply crash when it attempts to load the NATIONAL dex (The Kanto Dex is loaded separately, but uses the same Malloc as the National Dex).

The Pokédex's Malloc is specifically designed to support a maximum of 386 Pokémon, and you need to raise that limit to 411 to support the Unown remnants. (Among other complicated things too!).

The length of the malloc is determined at 0x1025EC, with a mov r0, #0xC1.

The safest way (and the way I did it personally) was to insert a small routine at this location which branches off to a custom routine.
This is the routine I would have used if I simply wanted the Unown Remnants to be included:


.text
.align 2
.thumb
.thumb_func
.global dexmemorylengthen
main:
ldr r0, length
bl there
ldr r1, return
bx r1
there: ldr r1, there2
bx r1
.align
length: .word 0x00000CD8
return: .word 0x081025F5
there2: .word 0x08002B9D


To insert this routine, navigate to 0x1025EC, and change the code there to:

00 48 00 47 XX XX XX 08

Where the XXXXXX08 stands for your pointer to the routine plus 1 for thumb.

This should help, as everything else is more obvious, and this is the one thing which is truly quite well hidden.

EDIT: I should have said that the "length" is the number of Pokémon in your Pokédex multiplied by 8. So for an unexpanded Pokédex it would be:
(0x182 * 0x8) = 0xC10
For including the Unown remnants, it would be:
(0x19B * 0x8) = 0xCD8
For having 649 Pokémon, it would be:
(0x289 * 0x8) = 0x1448.

tinix
September 6th, 2011, 04:11 AM
There's a Malloc (Memory Allocation) in the lead up to the Pokédex routine. If you don't hack this to have the correct length of memory, the ROM will simply crash when it attempts to load the NATIONAL dex (The Kanto Dex is loaded separately, but uses the same Malloc as the National Dex).

The Pokédex's Malloc is specifically designed to support a maximum of 386 Pokémon, and you need to raise that limit to 411 to support the Unown remnants. (Among other complicated things too!).

The length of the malloc is determined at 0x1025EC, with a mov r0, #0xC1.

The safest way (and the way I did it personally) was to insert a small routine at this location which branches off to a custom routine.
This is the routine I would have used if I simply wanted the Unown Remnants to be included:


.text
.align 2
.thumb
.thumb_func
.global dexmemorylengthen
main:
ldr r0, length
bl there
ldr r1, return
bx r1
there: ldr r1, there2
bx r1
.align
length: .word 0x00000CD8
return: .word 0x081025F5
there2: .word 0x08002B9D


To insert this routine, navigate to 0x1025EC, and change the code there to:

00 48 00 47 XX XX XX 08

Where the XXXXXX08 stands for your pointer to the routine plus 1 for thumb.

This should help, as everything else is more obvious, and this is the one thing which is truly quite well hidden.

Thank you very much I will try it ASAP

Jambo51
September 10th, 2011, 03:45 PM
I just wanted to compliment you on the awesome work you're doing Jambo. When this gets released, everyone will be using it, and you deserve a hell of a lot of credit for it.

I think I might retire from ROM hacking when this patch is finished, actually.

Putting in the concerted effort and time to make such a large patch has really taken it out of me. I've started to not enjoy it now.

slawter666
September 10th, 2011, 04:48 PM
I think I might retire from ROM hacking when this patch is finished, actually.

Putting in the concerted effort and time to make such a large patch has really taken it out of me. I've started to not enjoy it now.

Damn, it's a shame to hear that, especially from someone which so much talent. I can only suggest to take a break from this patch/ROM hacking in general until you feel ready to continue your projects. Sure, it means that everyone will have to wait longer for something this epic but you do it because you enjoy it and that should be your main priority.

I was recently in a similar situation (not with ROM hacking) where I wasn't enjoying what I knew I should enjoy so I gave it a rest for a bit and when I came back to it everything was fine again, maybe that'll help you, I don't know but the main thing is for you to ROM hack because you want to, not because other people want this patch.

metapod23
September 13th, 2011, 01:58 PM
I think I might retire from ROM hacking when this patch is finished, actually.

Putting in the concerted effort and time to make such a large patch has really taken it out of me. I've started to not enjoy it now.

I wouldn't (if I were you) just retire from the hacking scene altogether. Of course, it's always your choice, but I think everybody gets burned out, especially when things become tedious and time consuming.

You obviously need a break, though. You should spend a few months away from the forum and rom hacking in general at least. Maybe focus on other projects, and when those become tedious and time consuming, come back to this one.

The people (myself included) who are eager to get their hands on your patches will most likely still be here.

However, if you do choose to retire from hacking, just remember that we all appreciate the efforts you put into the time you did spend with it.

I just wanted to say that, because I've felt burned out by rom hacking before. The only things that help me force myself to keep up with the hack were my own willpower and knowing how many people appreciated/enjoyed what I was doing. So I just wanted to let you know that it's appreciated, whether you release this patch or not, or whether you never hack roms again. :)

Oh, and another thing that could help would be to take it slower than you feel you want to. Maybe only spend an hour or two a week on the patch. It will take a considerably much longer time to complete, but then you won't feel consumed by it.

Wiznatts
September 22nd, 2011, 02:53 PM
Thought that I would drop in here with the sheets that I have for front sprites. I haven't decided what to do about Gen 1-3 back sprites, so I'll hold off on posting those for a while. Anyway...

Sprites
Gen 1
Gen 2
Gen 3
Gen 4

Most of these are just the sprites ripped from official games. A few are from WesleyFG's sprite pack. The rest are from the formerly 493 GBA project that Chaos started or made by me.

EDIT: As per request, the sheets are down until I can go through them to see which are from DrFuji. Once I take those out I'll get them back up.

DrFuji
September 22nd, 2011, 03:14 PM
Thought that I would drop in here with the sheets that I have for front sprites. I haven't decided what to do about Gen 1-3 back sprites, so I'll hold off on posting those for a while. Anyway...

Sprites
Gen 1
snipGen 2
snipGen 3
snipGen 4
snip
Most of these are just the sprites ripped from official games. Others are from some hacks here, like Lilac and Light Platinum. A few are from WesleyFG's sprite pack. The rest are from the formerly 493 GBA project that Chaos started or made by me.

I don't know whether you contacted Wesley to ask to use his sprites, but you certainly didn't speak to me about the usage of mine. Please edit these sheets so you have removed all of the re-sized sprites that you took from Pokemon Lilac. I did not give you my permission to use them.

Thank you.

Jambo51
September 24th, 2011, 03:53 AM
Current Patch Progress:

Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (80% - Missing Shiny Pallets for Unova Pokémon)
Pokémon Data (100%)
Pokédex Entries (100%)
Movesets (4%)
TM/HM Compatibilities (0%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (100%)
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)
New Base Exp System (100%)
Item Use Coordinates (0%)
Gen 4/5 Moves (50% - Data/Types etc all in, but they all currently crash the game, need to research the battle scripts)
Gen 4/5 Moves Animations (0%)
Formes (90% - All the basic stuff needed is in, but there's no way to actually trigger the formes yet, except for Arceus's formes. This includes type switching formes!)
Extra TMs (100% - Still breakable, but it's easy enough to change if you wished to do so)
Music Extension Hack (100% - Not necessarily a major part of the hack, but nice to have. Gives you access to 12 direct tracks instead of 5)
Item Extension Hack (100% - Gives you an extra 255 (300 extra slots, of which 45 are the new TMs) items to play around with, as well as the free slots in the existing table for a total of 675 items)
Abilities (40% - Ability names are in, as are the Pokémon they are attached to, but they don't do anything yet)

Have I missed anything? If I have, let me know!

Full Metal
September 24th, 2011, 07:00 AM
Question to Jambo:
Would an sqlite database with pretty much every bit of every pokemon's data ( and other various things ) be of any use to you? I found one from veekun's place, if you'd like it.

Wesley FG
October 1st, 2011, 03:23 PM
Current Patch Progress:

Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (80% - Missing Shiny Pallets for Unova Pokémon)
Pokémon Data (100%)
Pokédex Entries (100%)
Movesets (4%)
TM/HM Compatibilities (0%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (100%)
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)
New Base Exp System (100%)
Item Use Coordinates (0%)
Gen 4/5 Moves (50% - Data/Types etc all in, but they all currently crash the game, need to research the battle scripts)
Gen 4/5 Moves Animations (0%)
Formes (90% - All the basic stuff needed is in, but there's no way to actually trigger the formes yet, except for Arceus's formes. This includes type switching formes!)
Extra TMs (100% - Still breakable, but it's easy enough to change if you wished to do so)
Music Extension Hack (100% - Not necessarily a major part of the hack, but nice to have. Gives you access to 12 direct tracks instead of 5)
Item Extension Hack (100% - Gives you an extra 255 (300 extra slots, of which 45 are the new TMs) items to play around with, as well as the free slots in the existing table for a total of 675 items)
Abilities (40% - Ability names are in, as are the Pokémon they are attached to, but they don't do anything yet)

Have I missed anything? If I have, let me know!


Work incribel!
I really wonder what you are doing
is a great revolution in the GBA hacks, which are limited to
386 Pokemon have the most 25 slots,
but now with all the Pokemon and features
a NDS game, the hack will be seen GBA
in a much more attractive and much better,
really a great idea and a great job
I am very anxious and would love to see the result and test
to meet this wonderful work

dudedude1
October 2nd, 2011, 08:51 AM
Current Patch Progress:

Limiters (100%)
Names (100%)
Front Sprites (100%)
Back Sprites (80% - Missing Shiny Pallets for Unova Pokémon)
Pokémon Data (100%)
Pokédex Entries (100%)
Movesets (4%)
TM/HM Compatibilities (0%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (100%)
Cries (100%)
Footprints (0%)
Pokédex Habitat Data (100%)
New Base Exp System (100%)
Item Use Coordinates (0%)
Gen 4/5 Moves (50% - Data/Types etc all in, but they all currently crash the game, need to research the battle scripts)
Gen 4/5 Moves Animations (0%)
Formes (90% - All the basic stuff needed is in, but there's no way to actually trigger the formes yet, except for Arceus's formes. This includes type switching formes!)
Extra TMs (100% - Still breakable, but it's easy enough to change if you wished to do so)
Music Extension Hack (100% - Not necessarily a major part of the hack, but nice to have. Gives you access to 12 direct tracks instead of 5)
Item Extension Hack (100% - Gives you an extra 255 (300 extra slots, of which 45 are the new TMs) items to play around with, as well as the free slots in the existing table for a total of 675 items)
Abilities (40% - Ability names are in, as are the Pokémon they are attached to, but they don't do anything yet)

Have I missed anything? If I have, let me know!

WOW!!! I'm completely amazed. This is exactly what I was looking for for my hack! Can't wait to see it finished. If you need any help just let me know!

romancandle
October 15th, 2011, 07:23 AM
Extra TMs (100% - Still breakable, but it's easy enough to change if you wished to do so)

I'm not 100% sure what you mean by "Breakable" -- is it breaking the game, can you cause the system to crash, etc? Also, can you implement the infinite use?

ptshady
October 15th, 2011, 11:31 AM
any updates on the progress?

Jambo51
October 15th, 2011, 12:48 PM
I'm not 100% sure what you mean by "Breakable" -- is it breaking the game, can you cause the system to crash, etc? Also, can you implement the infinite use?

What this means is that the new TMs still "break". That is, they are not infinite but they do refill PP, just like the old ones. I could easily implement the infinite TMs thing if I wanted.

any updates on the progress?

No. Bugs bugs bugs bugs. Did I mention bugs?
Lots of bug fixing going on, and since I spend increasing amounts of time at University, I've got less and less time to work on the patch. You're just gonna have to be patient.

dudedude1
October 15th, 2011, 04:23 PM
No. Bugs bugs bugs bugs. Did I mention bugs?
Lots of bug fixing going on, and since I spend increasing amounts of time at University, I've got less and less time to work on the patch. You're just gonna have to be patient.
We should all understand what you are going through. I love that your at least trying and everyone gets busy in life and all those bugs just make it worst. I wish you could call a computer exterminator XD. Anyways when you are done with this patch your name will go down in the ROM hacking history books. When I go to college I hope to be doing something close to as amazing as this!

ptshady
October 16th, 2011, 11:51 AM
take your time, this is a big step to the pokemon hacking. :)

Ongekibou
October 17th, 2011, 07:04 AM
I believe attacks past the normal limit break because of the lack of animation data.

Jambo51
October 18th, 2011, 09:25 AM
I believe attacks past the normal limit break because of the lack of animation data.

It's partially that and partially something else, which is that the new attacks use battle scripts (which are generally poorly understood) to execute the effects of the attack.

As of right now, the new attacks don't carry any of the new effects which they should, they simply do damage, or do nothing.

They DO however run the DPSS properly AFAICT, so attacks like Scratch are fairy ineffective when a Pokémon like Charmander uses it (from experience).

dudedude1
October 27th, 2011, 02:54 PM
Hey jambo I just had a couple questions about your patch (and don't worry it's not about progress xD)

When the patch is release will there be empty spaces (other than the orginal 25 between Celebi and Treecko) for fakemon or something because I have quite a few (maybe 50) new pokemon that I'd like to insert without replacing?
Will there be room to make new moves without replacing others?

That's all I can think of now but also I just wanted to say if you needed someone to insert move sets of pokemon I can do so. Thanks in advanced

Jambo51
October 27th, 2011, 11:43 PM
Firstly, the phrase should be "Thanks in advance." you don't need the d.

Secondly, there won't be free space as such. That is, I've specifically limited everything to 650 Pokemon (649 + Missingno). However, where possible, I have removed limiters, and documented the locations of absolutely necessary ones. So, if you wanted, you could use the documentation to add up to 999 Pokemon.

Finally, there are no limiters associated with the moves, except one which I removed, so all you need to do is repoint the table(s) and fill in the new entries.

dudedude1
October 28th, 2011, 03:41 AM
Firstly, the phrase should be "Thanks in advance." you don't need the d.

Secondly, there won't be free space as such. That is, I've specifically limited everything to 650 Pokemon (649 + Missingno). However, where possible, I have removed limiters, and documented the locations of absolutely necessary ones. So, if you wanted, you could use the documentation to add up to 999 Pokemon.

Finally, there are no limiters associated with the moves, except one which I removed, so all you need to do is repoint the table(s) and fill in the new entries.

Thanks this is useful and sorry for my grammar. xD There was one more question I had forgot to ask was will this be compatible with JPAN's Hack Engine without screwing each other up. Thanks in advance (See I got it right xD)

Jambo51
October 28th, 2011, 09:37 AM
Hehe, good stuff on fixing the grammar/spelling.
You won't be able to use JPAN's patch version of the engine, but you CAN use the installer to add his engine. There might be some incompatibilities, but most of his code should be fully compatible.

Wiznatts
October 30th, 2011, 12:27 PM
Just wanted to report an odd finding that I've seen with the part of the hack that allows Pokemon to evolve without the National Dex. I've directed some people to it for their hacks on another forum, and it seems there is a problem. Gen 2 and 3 Pokemon do evolve just fine, but Gen 1 mons don't evolve to mons from other Gens; so Golbat->Crobat doesn't work while Chikorita->Bayleef does. I have no idea why this might be, but it's something you'll want to look in to.

bwburke94
November 3rd, 2011, 02:31 PM
I doubt that's a priority, as most hacks give out the National Pokédex immediately. Still, that does need to be fixed eventually.

Wiznatts
November 3rd, 2011, 06:18 PM
The entire point of that part of the hack is to make it so that you don't have to give out the National Dex. Was that not clear from the OP?

Jambo51
November 4th, 2011, 03:19 AM
Just wanted to report an odd finding that I've seen with the part of the hack that allows Pokemon to evolve without the National Dex. I've directed some people to it for their hacks on another forum, and it seems there is a problem. Gen 2 and 3 Pokemon do evolve just fine, but Gen 1 mons don't evolve to mons from other Gens; so Golbat->Crobat doesn't work while Chikorita->Bayleef does. I have no idea why this might be, but it's something you'll want to look in to.

Thanks for alerting me to that bug. I honestly thought I'd fixed that, but I shall have another look when I get a chance.

I doubt that's a priority, as most hacks give out the National Pokédex immediately. Still, that does need to be fixed eventually.

It's certainly not a priority, but it's something I would like to have fixed before I release anything.

Incidentally, I will be releasing a Public Alpha within the next few days/weeks. I'll detail the Terms and Conditions (and such) when it gets released. It's currently available to a select few hackers I know for (semi) private alpha testing.

dudedude1
November 4th, 2011, 12:20 PM
Incidentally, I will be releasing a Public Alpha within the next few days/weeks. I'll detail the Terms and Conditions (and such) when it gets released. It's currently available to a select few hackers I know for (semi) private alpha testing.

I can't wait to see this. I would love to help with if you need any. I could insert the footprints or edit the movesets if needed. If your not willing to lend me the alpha early I can wait until you release it to everyone and report any bugs to you. You are amazing!

Full Metal
November 4th, 2011, 01:13 PM
Thanks for alerting me to that bug. I honestly thought I'd fixed that, but I shall have another look when I get a chance.



It's certainly not a priority, but it's something I would like to have fixed before I release anything.

Incidentally, I will be releasing a Public Alpha within the next few days/weeks. I'll detail the Terms and Conditions (and such) when it gets released. It's currently available to a select few hackers I know for (semi) private alpha testing.

-- Will documentation be provided, or is it up to us to find / observe the changes in the patch? ( apart from the casual observer's obvious observations )

Jambo51
November 4th, 2011, 03:48 PM
Tell me what documentation you guys want, and I'll try to provide it for you.
At the end of the day, the patch is being developed for you (and anyone else who wants it, of course :P).

For ease of use, I'll bundle a known bug list and 2 XSE header files so that people don't need to guess the indices of the new pokémon and items.

I will most likely also provide my ini for PGE so that people can see the new stuff in PGE.

Apart from that, what do you want documentation about?

Full Metal
November 4th, 2011, 04:41 PM
Apart from that, what do you want documentation about?

Locations of routines and such.
I'm not so much after the patch itself -- I'd like to be able to learn from it -- understand why you did what you did.
Basically, I'd like to be able to *recreate* what you did, just for the sake of the experience.
But I don't want to bug you, or ask you to teach me individually, and I'm competent enough to understand documentation, or even commented routines if available. ( The second would be amazing too, but I think you said earlier you lost several of your routines )
For example, I think it would be pretty cool to just fix the bugs that occur with using one of the 25 empty slots.

( However, if I do make a hack, I would definitely use the clean ROM patch, and this patch with it. Two amazing patches, may I say. -- Thanks you two. )

dudedude1
November 4th, 2011, 04:42 PM
Tell me what documentation you guys want, and I'll try to provide it for you.
At the end of the day, the patch is being developed for you (and anyone else who wants it, of course :P).

For ease of use, I'll bundle a known bug list and 2 XSE header files so that people don't need to guess the indices of the new pokémon and items.

I will most likely also provide my ini for PGE so that people can see the new stuff in PGE.

Apart from that, what do you want documentation about?

I think most of what you have is good. If it is simple, can you add a tutorial about what you were talking about earlier. Where you are able to increase the number of pokemon slots but if it is to time consuming I think that's fine. Also, like I said, if you need any help with footprints or movesets I'm here to help! :)

Jambo51
November 4th, 2011, 04:54 PM
I think most of what you have is good. If it is simple, can you add a tutorial about what you were talking about earlier. Where you are able to increase the number of pokemon slots but if it is to time consuming I think that's fine. Also, like I said, if you need any help with footprints or movesets I'm here to help! :)

Well, actually, footprints and movesets are 2 of the things I still haven't gotten around to finishing off. But I have to fix other things just now.

dudedude1
November 4th, 2011, 04:58 PM
Oh, well that's ok. That's all I was saying. I could help out but I think the documentation will be fine (Especially if you add the tutorial I suggested xD).

NarutoActor
November 9th, 2011, 06:08 PM
To Jambo: I was playing around with scripts and advance map, and I am not sure if this happend to you but the girl in pallet town has a diferent script ($B26A8A which is all FF's). No big deal just wondering why she has a different script then the original.

Jambo51
November 10th, 2011, 03:17 AM
I was most likely testing out some sort of script, removed it, but forgot to reset the original pointer.

EDIT: Fixed for alpha.

Jambo51
November 16th, 2011, 05:11 PM
This is (as the title implies) alpha 2 of my 649 patch. It fixes a couple of minor bugs which existed in alpha 1 (which was only privately available).

Terms of Use:
Do not, under any circumstances, release a hack based on this patch. You can build a private hack on the engine.

Report any and all bugs found either in this thread, in a VM, or a PM. I will endeavour to check the thread at least once a day to respond to any queries.

Please use this format, as it will aid me in fixing any bugs:
Bug - Explanation of what it is (a screenshot would also be fine if not better)
HOW TO REPLICATE: This is hugely important. If you can recreate the bug using a set of easy steps, tell me. Then I can replicate them myself to try to fix it. If not, don't worry too much.
When - When it happened (Specific area of game - like during battles or whatever)

Other than that, and most importantly, enjoy!

Please remember this is an EARLY ALPHA of the patch, and while most things work, some things do not. Things which don't work are listed in the spoiler below.

No way to activate the new formes. You can manually activate them (Note: no sprites, just types) by setting the 27th byte of the Pokémon party data to something other than 0. However, the formes are only applicable to the upper half of the byte. That is, 0x10, 0x20, 0x30 (etc).

Footprint data missing for all new Pokémon.

Size comparison is WAAAAAY off. All new Pokémon are Pikachu sized in the comparison.

DO NOT open Cherrim's Pokédex entry, game crashes.

Ignore weird sprites in Pokédex, or lack of sprites in some situations. It's down to the code for Male/Female sprites being present, but the sprites are not.

No Pokémon above Raichu have a moveset.

Lack of Day/Night cycle disables some new evolution types. Simply add the DAN by Prime_Dialga to fix this.

Could be some issues with some attacks with the new DPSS. Swift seems to do very little damage for some reason.

The new moves which do NOT do damage will do nothing.

The new moves all use the old animations, literally copied and pasted into the new slots. This will be rectified at a later date.

There seems to be a severe issue with Gen 1 Pokémon trying to evolve to later gens. Certainly, Golbat -> Crobat crashes the game. Try to avoid any such evolution unless you want to try to find out why.

The new TMs have no real association yet, I just filled the data with random bytes, so there could be weird learnsets.

Couple of weird graphical bugs (ignoring what is already above that is)

The ASM hack made by HackMew to speed up egg hatching with Flame Body/Magma Armour is NOT in the ROM.


Also attached are a couple of headers for XSE which contain the new items (sans sprites atm) and the new Pokémon to facilitate the use of the patch.

I hope this will be tested by many, and I also truly hope as many bugs as possible are found so I can fix them. :)

Also, I sneaked in ony tiny little semi-easter egg. You should find it quite quickly if you're curious enough to open Sappy. :P

Finally, a short note to Team Fail and his ilk: The documentation is still being written up, I'll post it when it's ready. I hope that's OK.

Last but not least; The link to it: http://dl.dropbox.com/u/24219056/649%20Patch%20Alpha%202.rar
The INI: http://dl.dropbox.com/u/24219056/roms.ini

This INI is for PGE, but it should contain most (if not all) of the relevant pointers/data.

dudedude1
November 16th, 2011, 05:46 PM
This is (as the title implies) alpha 2 of my 649 patch. It fixes a couple of minor bugs which existed in alpha 1 (which was only privately available).

Terms of Use:
Do not, under any circumstances, release a hack based on this patch. You can build a private hack on the engine.

Report any and all bugs found either in this thread, in a VM, or a PM. I will endeavour to check the thread at least once a day to respond to any queries.

Please use this format, as it will aid me in fixing any bugs:
Bug - Explanation of what it is (a screenshot would also be fine if not better)
HOW TO REPLICATE: This is hugely important. If you can recreate the bug using a set of easy steps, tell me. Then I can replicate them myself to try to fix it. If not, don't worry too much.
When - When it happened (Specific area of game - like during battles or whatever)

Other than that, and most importantly, enjoy!

Please remember this is an EARLY ALPHA of the patch, and while most things work, some things do not. Things which don't work are listed in the spoiler below.

No way to activate the new formes. You can manually activate them (Note: no sprites, just types) by setting the 27th byte of the Pokémon party data to something other than 0. However, the formes are only applicable to the upper half of the byte. That is, 0x10, 0x20, 0x30 (etc).

Footprint data missing for all new Pokémon.

Size comparison is WAAAAAY off. All new Pokémon are Pikachu sized in the comparison.

DO NOT open Cherrim's Pokédex entry, game crashes.

Ignore weird sprites in Pokédex, or lack of sprites in some situations. It's down to the code for Male/Female sprites being present, but the sprites are not.

No Pokémon above Raichu have a moveset.

Lack of Day/Night cycle disables some new evolution types. Simply add the DAN by Prime_Dialga to fix this.

Could be some issues with some attacks with the new DPSS. Swift seems to do very little damage for some reason.

The new moves which do NOT do damage will do nothing.

The new moves all use the old animations, literally copied and pasted into the new slots. This will be rectified at a later date.

There seems to be a severe issue with Gen 1 Pokémon trying to evolve to later gens. Certainly, Golbat -> Crobat crashes the game. Try to avoid any such evolution unless you want to try to find out why.

The new TMs have no real association yet, I just filled the data with random bytes, so there could be weird learnsets.

Couple of weird graphical bugs (ignoring what is already above that is)

The ASM hack made by HackMew to speed up egg hatching with Flame Body/Magma Armour is NOT in the ROM.


Also attached are a couple of headers for XSE which contain the new items (sans sprites atm) and the new Pokémon to facilitate the use of the patch.

I hope this will be tested by many, and I also truly hope as many bugs as possible are found so I can fix them. :)

Also, I sneaked in ony tiny little semi-easter egg. You should find it quite quickly if you're curious enough to open Sappy. :P

Finally, a short note to Team Fail and his ilk: The documentation is still being written up, I'll post it when it's ready. I hope that's OK.

Last but not least; The link to it: http://dl.dropbox.com/u/24219056/649%20Patch%20Alpha%202.rar
Glad to see this is finally up but its gonna be hard to create new inis for programs xD Also, will this ever be allowed to be used in public hacks? It be a shame if it couldn't. Keep up the good work Jambo!

Wiznatts
November 17th, 2011, 02:14 AM
I was hoping to have gotten the sheets for the Gen 4 Pokemon done before you released this to the public. Looks like I was a couple days late. I have good looking fronts for almost every Gen 4 'mon (I just need to make 3 Rotom Formes and recolor the Arceus sprites). Excluding Formes, I just need to make 13 more backs (28 with them), so I should be able to have those out by the end of the weekend I think. I hadn't intended to include gender differences, but adding those should be pretty easy if you want me to.

Jambo51
November 17th, 2011, 07:00 AM
Glad to see this is finally up but its gonna be hard to create new inis for programs xD Also, will this ever be allowed to be used in public hacks? It be a shame if it couldn't. Keep up the good work Jambo!

Ah, sorry. I forgot to include the INI with the file. I'll add it now.
The reason I'm not allowing hacks to be released based on this is because it's an ALPHA. It's buggy and I know it is. The whole point of releasing a public alpha is so we can find the bugs and fix them.

Once it hits what I will call "Beta" stage, people will be free to make hacks based on the patch.

I was hoping to have gotten the sheets for the Gen 4 Pokemon done before you released this to the public. Looks like I was a couple days late. I have good looking fronts for almost every Gen 4 'mon (I just need to make 3 Rotom Formes and recolor the Arceus sprites). Excluding Formes, I just need to make 13 more backs (28 with them), so I should be able to have those out by the end of the weekend I think. I hadn't intended to include gender differences, but adding those should be pretty easy if you want me to.

It's only the first alpha. We're a long way from being finished. So don't rush yourself too much. Ideally, more for the gen 5 Pokémon, we do kinda need the male/female sprites. Anyway, point is, don't rush yourself.

dudedude1
November 17th, 2011, 01:06 PM
Ah, sorry. I forgot to include the INI with the file. I'll add it now.
Thanks for that. It helps. Although I was trying to change the INI of Yape and Advanced Series and I got errors like ROM Configuration error or data is not compressed.

Jambo51
November 17th, 2011, 03:31 PM
Thanks for that. It helps. Although I was trying to change the INI of Yape and Advanced Series and I got errors like ROM Configuration error or data is not compressed.

You might get some problems with some of the sprites in any sprite editor because it's not configured to read the male/female/forme spriting system I created.

DO NOT use YAPE. It is incompatible with the new stuff. Use the Pokémon Game Editor instead. That is what the INI is for.

Crimson5M
November 17th, 2011, 03:34 PM
So there's no other Pokemon data editor that this will work with?
Damn, looks like I gotta wait 'til Christmas...

OFFTOPIC: That Doctor Who music vid you posted on youtube makes you a god in my eyes.

Jambo51
November 18th, 2011, 01:54 AM
Well, it might work with YAPE. But the way YAPE works might cause severe issues. As to everything else, I used the typical tools to edit, so as long as you have updated the INI, it should work fine.

Thanks for the love over the Who theme. Just one thing, I couldn't get the dum-de-dums to sound right, IMO. What did you think of them? Don't reply here, reply in a VM or something.

dudedude1
November 18th, 2011, 04:29 AM
Hey Jambo, is there anyway to change the number of footprints visible in Foot Print Editor because I took the offset from the INI but it only lets me view the first 386 and there is no INI to the program so that I can increase the number of footprints. ONce I get that and Pokemon Editor working with the new data I can do movesets and footprints for you so you can focus on the other things.

Jambo51
November 18th, 2011, 05:55 AM
Hey Jambo, is there anyway to change the number of footprints visible in Foot Print Editor because I took the offset from the INI but it only lets me view the first 386 and there is no INI to the program so that I can increase the number of footprints. ONce I get that and Pokemon Editor working with the new data I can do movesets and footprints for you so you can focus on the other things.

Not that i'm aware of. However, you could "trick" the programme into reading from a different offset. AFAIK, it still reads from the overall INI for the pointer to the footprint table, correct?

You could simply change that pointer in the INI so that it starts at slot 252 (as that's where Turtwig is) and go from there.

Awkward Squirtle
November 18th, 2011, 11:58 AM
Just wondering, have you seen this thread (http://www.pokecommunity.com/showthread.php?t=185257&highlight=65536)? It was an effort by some guys ( a few years ago to do essentially the same task you've done (unlock the Pokédex limits); as far as I know, it was never completed, though. This looks like it's achieved what they did and more; although I'm not a ROM hacker (never had the patience for ASM, and not a fan of tools that do everything for you), I applaud you for what you're pulling off here. I might just have to learn some ROM hacking so I can use this :)

Maybe I could try programming a Pokémon editing tool compatible with an extended Pokédex? I'm really busy with my university course at the moment, but I'll have some spare time in a few weeks when I can do something.

Also, the bug with Kanto Pokémon evolutions must be related in some way to FR/LG's blocking of those evolutions before the national dex is obtained. I'm sure you already know this, but I'm just making sure ;)

dudedude1
November 18th, 2011, 12:38 PM
Not that i'm aware of. However, you could "trick" the programme into reading from a different offset. AFAIK, it still reads from the overall INI for the pointer to the footprint table, correct?

You could simply change that pointer in the INI so that it starts at slot 252 (as that's where Turtwig is) and go from there.
Well the program's folder did not included an actually INI with it but you can chose which offset it starts reading at. So all I need to do is find the offeset of Turtwig and go on from there and you'll have your footprints!

romancandle
November 18th, 2011, 02:29 PM
When I use the Pokemon Editor program from the Game Editor, it asks me for a password when I want to use the Jambo51 evolution list. I can't find the password--can someone tell me it so I may check out the evolutions?

Gamer2020
November 18th, 2011, 04:25 PM
When I use the Pokemon Editor program from the Game Editor, it asks me for a password when I want to use the Jambo51 evolution list. I can't find the password--can someone tell me it so I may check out the evolutions?
I'll un-password it by next release. I'd rather not give out the password since no one should really be trying to do things with the alpha.

Just wondering, have you seen this thread (http://www.pokecommunity.com/showthread.php?t=185257&highlight=65536)? It was an effort by some guys ( a few years ago to do essentially the same task you've done (unlock the Pokédex limits); as far as I know, it was never completed, though. This looks like it's achieved what they did and more; although I'm not a ROM hacker (never had the patience for ASM, and not a fan of tools that do everything for you), I applaud you for what you're pulling off here. I might just have to learn some ROM hacking so I can use this :)

Maybe I could try programming a Pokémon editing tool compatible with an extended Pokédex? I'm really busy with my university course at the moment, but I'll have some spare time in a few weeks when I can do something.

Also, the bug with Kanto Pokémon evolutions must be related in some way to FR/LG's blocking of those evolutions before the national dex is obtained. I'm sure you already know this, but I'm just making sure ;)

There actually is a Pokemon Editor in PGE that supports Jambo's new formats.

romancandle
November 18th, 2011, 05:11 PM
I'll un-password it by next release. I'd rather not give out the password since no one should really be trying to do things with the alpha.

Ah, I apologize. I was actually just interested in seeing what all was actually introduced--like the attacks and abilities.

Wesley FG
November 18th, 2011, 05:35 PM
This is my best weekend notice,
i testing the patch at now,
thanks so much friend,
i really apreciated your work!

Jambo51
November 19th, 2011, 01:48 AM
Well the program's folder did not included an actually INI with it but you can chose which offset it starts reading at. So all I need to do is find the offeset of Turtwig and go on from there and you'll have your footprints!

I had a quick look last night, and the programme doesn't have the ability to use custom offsets. I tell you what, insert the footprints over the first 260 (or however many it is) slots, and I'll transplant them into the main patch when you're done. Sound reasonable?
The same would also work with the movesets, as long as you tell me where the stuff is lol.

This is my best weekend notice,
i testing the patch at now,
thanks so much friend,
i really apreciated your work!

You are most welcome, my friend.

Gamer2020
November 19th, 2011, 06:43 AM
I had a quick look last night, and the programme doesn't have the ability to use custom offsets. I tell you what, insert the footprints over the first 260 (or however many it is) slots, and I'll transplant them into the main patch when you're done. Sound reasonable?
The same would also work with the movesets, as long as you tell me where the stuff is lol.



You are most welcome, my friend.
The FootPrintEditor thing does support custom offsets. You put in the offset of the footprint you are editing, not the table.

oxenh
November 21st, 2011, 06:54 PM
jambo51 you make my day more bright!
i will test the patch right away
many thanks

shinyabsol1
November 21st, 2011, 09:07 PM
Hey Jambo51, this is some really impressive work! What you have managed to do is incredible, and I'm enjoying testing it out.

However, I'm experiencing a few problems that nobody else has posted about (maybe they are problems only for me because I have missed or done something wrong?):

1). You said that some sprites in the pokedex might be missing...but what about in wild encounters? For me, a bunch of pokemon (including Roserade and Biberal) have no sprite, and appear as glitchy squares when I attempt to look view them while in my party.

2). For some reason, advance map won't let me choose from ALL of the new pokemon you inserted--only Turtwig through Bastiodon--to set as encounter-able in the wild.

Any idea why I might be having these issues?

Thanks, and keep up the good work!

Jambo51
November 22nd, 2011, 04:20 AM
Answers to shinyabsol1:

1) Exactly the same issue as the Pokédex screen. Missing Data

2) A-Map isn't compatible with the new Pokémon because A-Map has (I think) built in limits preventing use of ID's higher than that of Chimecho (ID of Chimecho is 411). You CAN hex edit the data and then open the map in A-Map. It will not crash, but the Wild Data will show empty slots. No Bug - Compatibility Issue

Since these issues are NOT research related, I'm gonna see if I can make a new thread in the Sideshow Hacks section for this patch. Please report any bugs to that thread in future rather than here, as this is meant to be an R&D thread. We should try to keep this thread specifically for findings/research about this subject.

shinyabsol1
November 22nd, 2011, 01:07 PM
Answers to shinyabsol1:

1) Exactly the same issue as the Pokédex screen. Missing Data

2) A-Map isn't compatible with the new Pokémon because A-Map has (I think) built in limits preventing use of ID's higher than that of Chimecho (ID of Chimecho is 411). You CAN hex edit the data and then open the map in A-Map. It will not crash, but the Wild Data will show empty slots. No Bug - Compatibility Issue

Since these issues are NOT research related, I'm gonna see if I can make a new thread in the Sideshow Hacks section for this patch. Please report any bugs to that thread in future rather than here, as this is meant to be an R&D thread. We should try to keep this thread specifically for findings/research about this subject.

Ok.

Thanks for answering.

Chaos Rush
November 27th, 2011, 12:45 PM
So I took a look at your patch and noticed one thing: You're not using separate index numbers for forme changes. I think that's what's causing you a lot of trouble, take a look at this:
http://bulbapedia.bulbagarden.net/wiki/List_of_Pok%C3%A9mon_by_index_number_%28Generation_IV%29

In Generation IV, all Pokemon forme changes have separate index numbers, in other words, internally, Giratina Altered and Giratina Origin are counted as separate Pokemon. It appears that in Gen V they developed a new system where forme change don't use separate index numbers, but this is Gen III, so I'm assuming data structures would be closer to Gen IV than Gen V.

Is there a reason why you chose not to use separate index numbers for forme changes, or did you just not know that Gen IV did that? I believe it would save you a lot of trouble, because then you can handle forme changes (even type changes) simply by changing the Pokemon in your party to a different one in-real time. I'm assuming that wouldn't be that hard with ASM.

Jambo51
November 27th, 2011, 01:16 PM
The main reason I chose to do it Gen 5 style, was because I felt it would be neater in the long run. There's more background code to deal with it, but there's MUCH less data stored in the ROM.

I actually have the formes working with my code (well - the code to handle the differences between formes exists), but there is currently no existing way to activate them. This is something I'm actually working on.

Also, because of the checksum, changing anything in the Pokémon data directly can be extremely hazardous.

My solution was to make use of an otherwise unused set of bits in the Pokémon data, which is the upper 4 bits of the "Mark" byte. These 4 bits allow 16 possibilities for differing formes, which is more than enough for all the existing Pokémon (Arceus aside - but Arceus was easy to do, as it's simply based on a held item).

Harder? - Undoubtedly.
More Impressive - I'd argue it is.

Chaos Rush
November 27th, 2011, 01:32 PM
Also, because of the checksum, changing anything in the Pokémon data directly can be extremely hazardous.

Well I'm not that knowledgeable on things like this, but changing the index number of a Pokemon in your save file will mess up the checksum?

I do agree, it is more impressive to do it the Gen V way. Also I have a question, does your patch have gender differences (or at least you have it planned and tested and working).

Also another question, I noticed that in the Gen III games, index number 412 (right after Chimecho) is the extra Unown forms. I noticed in your patch that 412 is Burmy. How are you keeping the Unown forms?

Jambo51
November 28th, 2011, 06:29 AM
When writing to the Pokémon's data, you risk changing something which should have an effect in the checksum. Without updating this checksum, the Pokémon will instantly become a Bad Egg.

My way of doing the formes avoids this potential problem by not writing to that area of data. It simply keeps the same Pokemon, calling the stat recalculator if necessary. It also takes much less space in terms of seperate data.

The code for gender differences is mixed in with the formes, since I reasoned that they were technically a variation on formes. Like Arceus however, nothing is directly stored to the Pokémon data which determines its gender, it is simply calculated on the fly as necessary. The Sprites are missing however.

Actually, the EGG is sprite 412. But that's nitpicking. To answer your question, I inserted a little bit of extra code at the sprite getting locations, with checks against the Sprite number and the Species ID (both are in the registers at this stage in FR). Simply, If it's Unown, I load a different table offset, and subtract the necessary number of sprites to make it fit, and if it's the EGG sprite ID, I check if the Pokémon the sprite request came from is an egg. Even if it is a Burmy AND an EGG, it will automatically display the EGG sprite until it hatches.

More complicated than necessary, but that's what happens when you forget that the Unown sprites (and EGG sprites) follow directly on from the "Normal" sprites.

EDITED TO ADD: I managed to get formes to recalculate stats when activated based on the current forme.
http://www.youtube.com/watch?v=TYawCGXDB9E

Chaos Rush
December 4th, 2011, 11:18 PM
Minor issue I noticed: It doesn't save on actual GBA hardware. I tested it with my EZFlash3in1 on my DS. Well, it does save kinda, but if you turn it off and load it up, you get, "The save file is corrupt. The previous save file will be loaded." And then it will kinda load, but it was all glitchy, since I saved in Viridian Forest but it loaded in Pallet Town for some reason.

If you soft reset, then you get, "The save file is deleted...". I'm assuming this all has to do with the save block hack.

Jambo51
December 5th, 2011, 10:49 AM
Minor issue I noticed: It doesn't save on actual GBA hardware. I tested it with my EZFlash3in1 on my DS. Well, it does save kinda, but if you turn it off and load it up, you get, "The save file is corrupt. The previous save file will be loaded." And then it will kinda load, but it was all glitchy, since I saved in Viridian Forest but it loaded in Pallet Town for some reason.

If you soft reset, then you get, "The save file is deleted...". I'm assuming this all has to do with the save block hack.

It probably does, but I genuinely couldn't comment on it, as I didn't develop it. I never said that the code would work on GBA, but it's nice to know it doesn't. JPAN would know more than me though.

[AgR] Nightmare
December 6th, 2011, 07:53 PM
2) A-Map isn't compatible with the new Pokémon because A-Map has (I think) built in limits preventing use of ID's higher than that of Chimecho (ID of Chimecho is 411). You CAN hex edit the data and then open the map in A-Map. It will not crash, but the Wild Data will show empty slots. No Bug - Compatibility Issue



Sorry man, but i don't understand as edit wild pokemon...

Jambo51
December 9th, 2011, 07:55 AM
Nightmare;6956385']Sorry man, but i don't understand as edit wild pokemon...


What on earth do you mean? That post makes no sense....

Wiznatts
December 12th, 2011, 09:07 AM
So I got really busy right after I said I'd have the rest of the generation done in a week. Oh well, its not like there was any huge rush or anything. But, I'm done, at least with the vanilla versions of all of them. I still have to do things like the Rotom Formes, but that list is much shorter.

I formatted everything for insertion with Wichu's Advance series, so I'm not sure how useful that is for you, but I also have them all organized in folders with individual sprites. I've attached both since I'm not sure which is better for you. The one with the folders is the New Sprites.zip and the one formatted for the Advance series is Gen 4.zip. Just make sure and credit the following people:
WesleyFG, ChaosRush, Miyuki, Ingrid, Icy and myself. I honestly cannot wait to see this project finished.

Jambo51
December 12th, 2011, 09:31 AM
So I got really busy right after I said I'd have the rest of the generation done in a week. Oh well, its not like there was any huge rush or anything. But, I'm done, at least with the vanilla versions of all of them. I still have to do things like the Rotom Formes, but that list is much shorter.

I formatted everything for insertion with Wichu's Advance series, so I'm not sure how useful that is for you, but I also have them all organized in folders with individual sprites. I've attached both since I'm not sure which is better for you. The one with the folders is the New Sprites.zip and the one formatted for the Advance series is Gen 4.zip. Just make sure and credit the following people:
WesleyFG, ChaosRush, Miyuki, Ingrid, Icy and myself. I honestly cannot wait to see this project finished.

Do you have permission to post these?
I hope you do :)

I do actually have Wichu's sprite editor, and it works more or less perfectly for all the "normal" pokémon. ie, those without male/female sprites or formes.
So i'll be able to insert the majority very quickly and easily using that, and do the remainder manually.

And another thing - Thanks!

Wiznatts
December 12th, 2011, 12:28 PM
Yes, I've talked to Wesley about using his sprites and he was totally fine with it. The Togekiss sprite was made by someone for ChaosRush's 493 GBA project here, which was public. I just can't remember the actual user who made it, so I just figured crediting Chaos under the umbrella of it being his project would suffice. The others are all users on another forum that I originally started working on these for as my own project, so I know I can post theirs.

Jambo51
December 12th, 2011, 01:37 PM
I was just making sure after what had happened in this thread in the past, i'm sure you can understand that I was just covering my read end.

I have already inserted the sprites (and removed all the old sprites), and they look so much better.
Now I simply need to fiddle about with the sprites with formes so that they work as well.

Wiznatts
December 13th, 2011, 08:26 PM
Completely understandable. There are at least a couple sprites in the pack that might be a little wonky. I know I had problems inserting Infernape for some reason, but I think I have that worked out. Also, the formatted Arcues sprite somehow got two pixels shaved off the shiny back sprite. Using the ones in the folder pack should work fine though. If you find any problems with the pack, would you mind letting me know?

Chaos Rush
December 24th, 2011, 10:03 PM
Small tip: When inserting movesets with Pokemon Game Editor, you can type in the letter of the move and it will scroll through all the moves that begin with that letter. That way you don't have to painstakingly look for the move by scrolling through the entire list of moves looking for one move. It makes the moveset adding process much, much faster, and I'm assuming that's why most Pokemon don't have a moveset in your patch because it was probably really annoying looking for every single move.

Speedster
December 25th, 2011, 02:57 PM
Small tip: When inserting movesets with Pokemon Game Editor, you can type in the letter of the move and it will scroll through all the moves that begin with that letter. That way you don't have to painstakingly look for the move by scrolling through the entire list of moves looking for one move. It makes the moveset adding process much, much faster, and I'm assuming that's why most Pokemon don't have a moveset in your patch because it was probably really annoying looking for every single move.
No need for worry for Jambo there Chaos. I'm taking care of that for him but that helps me a lot to get it done faster.

JPAN
January 1st, 2012, 09:49 PM
Minor issue I noticed: It doesn't save on actual GBA hardware. I tested it with my EZFlash3in1 on my DS. Well, it does save kinda, but if you turn it off and load it up, you get, "The save file is corrupt. The previous save file will be loaded." And then it will kinda load, but it was all glitchy, since I saved in Viridian Forest but it loaded in Pallet Town for some reason.

If you soft reset, then you get, "The save file is deleted...". I'm assuming this all has to do with the save block hack.
It probably does, but I genuinely couldn't comment on it, as I didn't develop it. I never said that the code would work on GBA, but it's nice to know it doesn't. JPAN would know more than me though.

I'm sorry about that. I didn't test in real hardware. But I got my old Supercard and tried it out.
After a couple of tries, I could find something wrong with the old save block hack.
So I made a new one that uses the game's system to save. No more hardware failure possible.
New hack in attatchment. Hope it will not be to troublesome to fix.What happens is I made too many assumptions about save files. I dug into the code and found out some things so obvious, I did not see how I missed them.
First, Slots 0x1c and 0x1d are already used by the game itself. True, I don't really know what they save (other than it's at 0x0201c000, and has 0x1f00 bytes), but the save file gets corrupted when you change them by force.
Second, after expanding my search in the Fire red diassembly, I found that all bytes after 0x0203f178 are used up by some other processes in the game (also don't know which).

Third, trying to get Fire Red or above to run in my flashcard was pretty difficult. Apparently, some cards could not handle 128K flash, so they had to rely on external fixes to games that used them. They do so by saving only 64kb of memory (which is the amount truly used in Fire Red). So, at least on Supercard, any and all save memory hacks would fail.

So, I decided to think of a way to use absolutely no extra blocks, while still gaining some saveable bytes. 4kb is more than enough for most hackers, and as such, finding just one block worth of space would be enough.

First, a brief explaning of how Fire Red save blocks are made:
The block is composed of data, and a small footer that contains meta-data. It contains the block number (for loading order), save number (keeps two saves at a time, one save older as a fallback in case of the newer save being corrupt), checksum and a magic number. The number is always the same, and looks like a pointer, but no interesting code is present there. This takes the last 0xc bytes of the block.

Now, this is where waste comes into play. The saves are always stored in (at most) 0xf80 bytes of size. And other than some strain on the physical Flash, there are no reasons for that to be so (that I could find). Leaving the last 0x10 bytes of the block (4bytes + footer), a save block can store +0x70 bytes of data in each, at least.
The game saves the three Dynamic scrambled blocks (indexed by 0x3005008, 0x300500c and 0x3005010) that contain player, map and box data. The first one has 0xf24 bytes, the second has 0x3d68 bytes and the third one has 0x83d0 bytes.
So, they divided the larger ones in blocks of 0xf80 and some leftover bytes at the end.

The list of save sizes is at 083FEC94. other Roms shoud have something similar.

Changing those bytes around, we have the first block stay the same, leaving 0xcc (204) bytes at the end. The second changes the contents to 0xff0 for all except last block with 0xd98 bytes. That is a 0x258 (600) byte leftover. The third block goes through the same process, leaving the last with 0x450 bytes, with 0xba0 (2976) bytes remaining.
That leaves a total of 0xec4 (3780) bytes to be saved. That is pretty near the 4096 bytes.

So, using their own save and load routines, I input a small code that loads and stores to their respective sections our required data.

Note that the load and store routines still see the same (always reads 0x1000 bytes and stores 0x1000 bytes, in any case), but now some of our data is stored with them (like stowaway data).

As I mentioned before, 0x0203f174+ is used by a different process, but I am sure that 0x0203b174 to 0x0203f173 are used by the help screen (In a DMA copy of the last part of the VRAM, address 0x0600c000). So, disable them as in the original hack, and they are still safe. It's the 0203f800 flag region that is not.Included are the compiled and source code. For the compiled, copy from 34 to e4 to somewhere on the ROM, then from e4 to 11c and paste on top of the Save size pointer (0x083FEC94).

NintendoBoyDX
January 1st, 2012, 11:02 PM
Second, after expanding my search in the Fire red diassembly, I found that all bytes after 0x0203f178 are used up by some other processes in the game (also don't know which).


By chance were you using any sort of D/N or RTC? An old one that is around here somewhere used that block for temporary storage if I remember. I'm pretty sure prime-dialga's doesn't though.

MsAllyJacqui
January 2nd, 2012, 03:36 AM
This is really, really impressive. I couldn't in a million years figure out how you managed to create this awesomeness. ^_^ Hopefully, this gets more attention soon because this could change how many people choose to hack third gen games.

Jambo51
January 2nd, 2012, 10:08 AM
I must be doing something wrong. I inserted the routines, and they work fine.
But on restarting the ROM, the game claims the save game has been corrupted.

I'm well aware that the save will have changed massively due to the change in code - but is this simply because of the new storage locations, or is it down to something else altogether?

EDIT: Looks like it was just because everything has been moved around. After restarting the game and saving the game - the save worked fine.

P0kemon Trainer Red
January 21st, 2012, 10:41 PM
So how much progress have you made? What else do you need to do?

Jambo51
January 24th, 2012, 12:03 PM
Current Patch Progress:

Limiters (100%)
Names (100%)
Front Sprites (77% Started inserting with a new set of sprites)
Back Sprites (77%)
Pokémon Data (100%)
Pokédex Entries (100%)
Movesets (8%)
TM/HM Compatibilities (0%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (100%)
Cries (100%)
Footprints (100%)
Pokédex Habitat Data (100%)
New Base Exp System (100%)
Black/White Experience System (90%)
Item Use Coordinates (0%)
Gen 4/5 Moves (100% Data, 0% effects for status attacks)
Gen 4/5 Move Animations (0%)
Formes (100% data and reading routines, 10% writing routines)
Extra TMs (100%)
Music Extension Hack (100%)
Item Extension Hack (100% - Gives you an extra 300 extra item slots, of which 45 are the new TMs, to play around with, as well as the free slots in the existing table for a total of 675 items)
Abilities (100% names, 41% assignments to species, 13% routines)

Speedster
January 24th, 2012, 12:49 PM
Current Patch Progress:

Limiters (100%)
Names (100%)
Front Sprites (77% Started inserting with a new set of sprites)
Back Sprites (77%)
Pokémon Data (100%)
Pokédex Entries (100%)
Movesets (8%)
TM/HM Compatibilities (0%)
Evolution Data (100%)
Evolution Types Added (100%)
Icons (100%)
Cries (100%)
Footprints (100%)
Pokédex Habitat Data (100%)
New Base Exp System (100%)
Black/White Experience System (90%)
Item Use Coordinates (0%)
Gen 4/5 Moves (100% Data, 0% effects for status attacks)
Gen 4/5 Move Animations (0%)
Formes (100% data and reading routines, 10% writing routines)
Extra TMs (100%)
Music Extension Hack (100%)
Item Extension Hack (100% - Gives you an extra 300 extra item slots, of which 45 are the new TMs, to play around with, as well as the free slots in the existing table for a total of 675 items)
Abilities (100% names, 41% assignments to species, 13% routines)Very, very excellent. Your work for the community of ROM hacks is really paying off.

I finished exams just recently so I have a bit more free time for the movesets and TM/HM compatibilities.

I can assign the abilities to each Pokemon if needed.

I can collect images or something for 5th Gen move animations if that helps bring that number past 0.

All and all you are doing great and keep up the good work Jambo.

Jambo51
January 24th, 2012, 01:03 PM
I should've said, the few abilities I've got to work so far are the passive ones. What I mean by that is that the abilities affect one small thing somewhere in the background of the game's calculations, rather than having a message printed to screen or whatever when they're activated.

I got the following abilities working:

Simple
Contrary
Victory Star
Adaptability
Iron Fist
Rivalry
Heatproof (Attacks have halved damage, still haven't found the burn damage calculator)
Unaware
Tinted Lens
Filter
Solid Rock


The only bug thus far is that when Contrary is activated, the game still calls the normal animation and text, rather than the opposite animation, but the actual data itself is correctly written.

MalikX
January 28th, 2012, 04:10 AM
Hello, I just tried changing the bytes as you told us to enable evolutions without national dex and it works well (I haven't actually changed the bytes myself, I did through the use of Misc Editor) except when I use stones. When I use those, it just says "huh?" like it normally does and the evolution wouldn't happen. Is it a malfunction of Misc Editor or something else?

Shiny Quagsire
January 28th, 2012, 10:13 AM
Hello, I just tried changing the bytes as you told us to enable evolutions without national dex and it works well (I haven't actually changed the bytes myself, I did through the use of Misc Editor) except when I use stones. When I use those, it just says "huh?" like it normally does and the evolution wouldn't happen. Is it a malfunction of Misc Editor or something else?

This is because you don't have the National Dex. If you've ever played Fire Red with a golbat or chansey, they'll try to evolve along the way, but it'll end in "Huh?" The National Dex is set with a flag. It should be listed in XSE tough. :)

MalikX
January 28th, 2012, 12:38 PM
I know, I just changed the bytes at OxOCE91A to 00 00 14 E0 and the evolutions work now just fine even without the national dex, except in the case of evolution stones.

Jambo51
January 28th, 2012, 01:52 PM
I know, I just changed the bytes at OxOCE91A to 00 00 14 E0 and the evolutions work now just fine even without the national dex, except in the case of evolution stones.

Hello, I just tried changing the bytes as you told us to enable evolutions without national dex and it works well (I haven't actually changed the bytes myself, I did through the use of Misc Editor) except when I use stones. When I use those, it just says "huh?" like it normally does and the evolution wouldn't happen. Is it a malfunction of Misc Editor or something else?

I think I overlooked the code which runs that check for the evo stones. I'll look into it shortly.

MalikX
January 31st, 2012, 10:13 AM
So, did you find anything?

Jappa
May 16th, 2012, 05:30 AM
Just letting you know that I'm currently working on properly resizing all Pokemon sprites with the same ratio, all saved in files ready to be used with Wichu's sprite editor:

img809.imageshack.us/img809/8315/projectg.png



Could you upload the backsprites you previewed earlier? Thnx man awesome work!

Fireredkid
May 21st, 2012, 10:03 PM
I like to report a bug in your hack Jambo after I talk to the howto catch pokemon old man when I go into a wild pokemon battle instead of seeing Red's backsprite I see the old man's backsprite and the select pokemon screen (where you switch the pokemon on your team around) it's a bit glitchy the same happens after you watch the pokedude and if you run knock out or catch the pokemon you'll go back to the main Teachy Tv screen

Jambo51
May 22nd, 2012, 03:19 PM
So, did you find anything?

I checked and checked and checked, and nothing seems to be amiss.

I like to report a bug in your hack Jambo after I talk to the howto catch pokemon old man when I go into a wild pokemon battle instead of seeing Red's backsprite I see the old man's backsprite and the select pokemon screen (where you switch the pokemon on your team around) it's a bit glitchy the same happens after you watch the pokedude and if you run knock out or catch the pokemon you'll go back to the main Teachy Tv screen

I can't replicate this. At one stage, there was a bug with the old man tutorial, but that was fixed some time ago. Try repatching and trying again.

FrozenInfernoZX
July 19th, 2012, 07:36 AM
I created a regional dex of 253 Pokemon by increasing the limiters. But I am not sure how to make the Pokedex counter to detect the Pokemon from 152 to 253. These Pokemon show up as caught and seen, but are not counted towards the Pokedex total.

Darthatron
July 19th, 2012, 07:08 PM
08104BF2 CMP R0, #0x96
I believe this is what "counts" the seen Pokemon for the RegionalDex.

Full routine:
08104BBC @ =============== S U B R O U T I N E =======================================
08104BBC
08104BBC
08104BBC CountSeenPokemon: @ CODE XREF: sub_0810250C+F0p
08104BBC @ sub_0810250C+FEp ...
08104BBC PUSH {R4-R7,LR}
08104BBE LSLS R0, R0, #0x18
08104BC0 LSRS R6, R0, #0x18
08104BC2 LSLS R1, R1, #0x18
08104BC4 LSRS R1, R1, #0x18
08104BC6 MOVS R5, #0
08104BC8 CMP R1, #0
08104BCA BEQ RegionalDex
08104BCC CMP R1, #1
08104BCE BEQ NationalDex
08104BD0 B Error
08104BD2 @ ---------------------------------------------------------------------------
08104BD2
08104BD2 RegionalDex: @ CODE XREF: CountSeenPokemon+Ej
08104BD2 MOVS R0, #0
08104BD4
08104BD4 loc_08104BD4: @ CODE XREF: CountSeenPokemon+38j
08104BD4 ADDS R0, #1
08104BD6 LSLS R0, R0, #0x10
08104BD8 LSRS R4, R0, #0x10
08104BDA MOVS R0, R4
08104BDC MOVS R1, R6
08104BDE MOVS R2, #0
08104BE0 BL dex_flag_check
08104BE4 LSLS R0, R0, #0x18
08104BE6 CMP R0, #0
08104BE8 BEQ loc_08104BF0
08104BEA ADDS R0, R5, #1
08104BEC LSLS R0, R0, #0x10
08104BEE LSRS R5, R0, #0x10
08104BF0
08104BF0 loc_08104BF0: @ CODE XREF: CountSeenPokemon+2Cj
08104BF0 MOVS R0, R4
08104BF2 CMP R0, #0x96
08104BF4 BLS loc_08104BD4
08104BF6 B Error
08104BF8 @ ---------------------------------------------------------------------------
08104BF8
08104BF8 NationalDex: @ CODE XREF: CountSeenPokemon+12j
08104BF8 MOVS R0, #0
08104BFA LDR R7, =0x181
08104BFC
08104BFC loc_08104BFC: @ CODE XREF: CountSeenPokemon+60j
08104BFC ADDS R0, #1
08104BFE LSLS R0, R0, #0x10
08104C00 LSRS R4, R0, #0x10
08104C02 MOVS R0, R4
08104C04 MOVS R1, R6
08104C06 MOVS R2, #0
08104C08 BL dex_flag_check
08104C0C LSLS R0, R0, #0x18
08104C0E CMP R0, #0
08104C10 BEQ loc_08104C18
08104C12 ADDS R0, R5, #1
08104C14 LSLS R0, R0, #0x10
08104C16 LSRS R5, R0, #0x10
08104C18
08104C18 loc_08104C18: @ CODE XREF: CountSeenPokemon+54j
08104C18 MOVS R0, R4
08104C1A CMP R0, R7
08104C1C BLS loc_08104BFC
08104C1E
08104C1E Error: @ CODE XREF: CountSeenPokemon+14j
08104C1E @ CountSeenPokemon+3Aj
08104C1E MOVS R0, R5
08104C20 POP {R4-R7}
08104C22 POP {R1}
08104C24 BX R1
08104C24 @ End of function CountSeenPokemon
08104C24
08104C24 @ ---------------------------------------------------------------------------
08104C26 .byte 0
08104C27 .byte 0
08104C28 dword_08104C28: .long 0x181 @ DATA XREF: CountSeenPokemon+3Er

FrozenInfernoZX
July 19th, 2012, 07:54 PM
Oh, alright. Thanks alot!

Ark_Silvanos
July 28th, 2012, 06:19 AM
Hmmm... one more thing i noticed while trying to extend the regional dex is that the pokemon's numbers dont show up on the summary screen (shows up as ???). Not that much of a big thing, but it would be a little more neater.... if someone had a fix?

Jambo51
July 28th, 2012, 06:58 AM
Hmmm... one more thing i noticed while trying to extend the regional dex is that the pokemon's numbers dont show up on the summary screen (shows up as ???). Not that much of a big thing, but it would be a little more neater.... if someone had a fix?

Buddy, I had to completely rewrite the Pokédex for it to support regional dexes. It simply is not designed to support a regional dex. The Kanto dex in FR is literally the national dex but cut to only be 151 long.

I built a brand new routine for it to support the Regional Dex, but it's combined with a lot of small changes in other places to make it all work.

Even then, I still have at least one thing which I've overlooked at this stage which will need fixed, so it's not finished.

Ark_Silvanos
July 29th, 2012, 12:46 AM
Buddy, I had to completely rewrite the Pokédex for it to support regional dexes. It simply is not designed to support a regional dex. The Kanto dex in FR is literally the national dex but cut to only be 151 long.

I built a brand new routine for it to support the National Dex, but it's combined with a lot of small changes in other places to make it all work.

Even then, I still have at least one thing which I've overlooked at this stage which will need fixed, so it's not finished.

ah no... i was just trying to extend the kanto dex... kinda like "faking" a regional dex, not an actual regional dex like in GSC :P... I figured there must be a check for the national dex when the data was being displayed on the summary screen, but I was having trouble finding the routine that does this to check....

Your work is impressive, to say the least, and I wasn't trying to take away from it... but in my hack, i figured around 180 pokemon would be enough, so i wanted to remove the national dex completely and only leave the Kanto Dex, so i figured it would only be a couple of checks that needed bypassing. But what u've found so far are the main things, so its fine. :D

GoGoJJTech
March 8th, 2013, 02:29 PM
There's a Malloc (Memory Allocation) in the lead up to the Pokédex routine. If you don't hack this to have the correct length of memory, the ROM will simply crash when it attempts to load the NATIONAL dex (The Kanto Dex is loaded separately, but uses the same Malloc as the National Dex).

The Pokédex's Malloc is specifically designed to support a maximum of 386 Pokémon, and you need to raise that limit to 411 to support the Unown remnants. (Among other complicated things too!).

The length of the malloc is determined at 0x1025EC, with a mov r0, #0xC1.

The safest way (and the way I did it personally) was to insert a small routine at this location which branches off to a custom routine.
This is the routine I would have used if I simply wanted the Unown Remnants to be included:


.text
.align 2
.thumb
.thumb_func
.global dexmemorylengthen
main:
ldr r0, length
bl there
ldr r1, return
bx r1
there: ldr r1, there2
bx r1
.align
length: .word 0x00000CD8
return: .word 0x081025F5
there2: .word 0x08002B9D


To insert this routine, navigate to 0x1025EC, and change the code there to:

00 48 00 47 XX XX XX 08

Where the XXXXXX08 stands for your pointer to the routine plus 1 for thumb.

This should help, as everything else is more obvious, and this is the one thing which is truly quite well hidden.

EDIT: I should have said that the "length" is the number of Pokémon in your Pokédex multiplied by 8. So for an unexpanded Pokédex it would be:
(0x182 * 0x8) = 0xC10
For including the Unown remnants, it would be:
(0x19B * 0x8) = 0xCD8
For having 649 Pokémon, it would be:
(0x289 * 0x8) = 0x1448.

So what youre saying is if I put f68 (1ed *8) I can get 493 pokemon just like that after repointing the tables? The game doesnt freeze when i insert the asm, so it must have worked, but theres no way of making sure, because theres no way for me to record the last pokemon to the pokedex, and so i cant see the last pokemon (arceus) in the pokedex.

robin22gongon
March 8th, 2013, 04:19 PM
Hey guys! Can everything Jambo51 provided decrease the number of Pokemon in the Pokedex? For example, I only want 256 Pokemon in my Pokedex but still after catching that 256 Pokemon, I can still get the 100% completion of the Pokedex.

GoGoJJTech
March 10th, 2013, 04:43 PM
Well I succeeded in getting 494 pokemon, but everything after Chimecho comes up as the 10 ?s but everything else works. how can i fix the ?????????? glitch?

ShyRayq
March 10th, 2013, 09:48 PM
Well I succeeded in getting 494 pokemon, but everything after Chimecho comes up as the 10 ?s but everything else works. how can i fix the ?????????? glitch?

Are you sure you renamed all the new Pokemon? Or maybe you didn't repoint and expand the Pokedex data table. Or maybe you remove all the limiters. Just some things to consider

GoGoJJTech
March 13th, 2013, 11:26 AM
I renamed them all. The fact that the game doesnt freeze is a sign that it CAN support them, just only the names arent appearing. I repointed every table and it all works except names after chimecho. I did expand it since if you try a wildbattle on fire red with unexpanded it freezes. Mine doesnt.

You mentioned limiters, which are the limiters?

ShyRayq
March 13th, 2013, 10:10 PM
I renamed them all. The fact that the game doesnt freeze is a sign that it CAN support them, just only the names arent appearing. I repointed every table and it all works except names after chimecho. I did expand it since if you try a wildbattle on fire red with unexpanded it freezes. Mine doesnt.

You mentioned limiters, which are the limiters?

Okay, these are the limiters.
Replace the 2 bytes at these addresses with the number of pokemon IN HEX (reversed)
0x431F4
0x43240
0x4328C
0x459EC
0x7464C
0x7471C
0x7477C
0xCB160
0xCB16C
0x1037D4
0x103870
0x104C28

Replace the 2 bytes at these addresses with the number of pokemon -1 IN HEX (reversed)
0x88EA4
0x103920

That should be enough, but if it still doesn't work, I have a bunch of other limiters that do other things. But if it works, thats great.

GoGoJJTech
March 14th, 2013, 02:36 AM
Okay, these are the limiters.
Replace the 2 bytes at these addresses with the number of pokemon IN HEX (reversed)
0x431F4
0x43240
0x4328C
0x459EC
0x7464C
0x7471C
0x7477C
0xCB160
0xCB16C
0x1037D4
0x103870
0x104C28

Replace the 2 bytes at these addresses with the number of pokemon -1 IN HEX (reversed)
0x88EA4
0x103920

That should be enough, but if it still doesn't work, I have a bunch of other limiters that do other things. But if it works, thats great.


What i didnt post yesterday was that i made a trainer battle where a guy has darkrai. Darkrai is in the 491 SLOT but it comes up as 412 burmy. Theres like 70 412s and they arent seen yet but ill fix it.


EDIT: Now the numbers from 412-490 are gone. It goes
409 ------
410 ------
411 ------
491 Burmy

Why does this happen??? I think there are more limiters you should say.

robin22gongon
March 17th, 2013, 03:51 PM
Hey dudes, how do I make the maximum number of pokemon in the pokedex just 200? I want to decrease the number of pokemon for my hack. How do I limit the pokedex to 200 entries and still get the "pokedex complete!" certificate?

GoGoJJTech
March 18th, 2013, 06:28 AM
Possible, but not easy. Find the limiters (from an early post on pg6 or from dragoon's post)
and decrease them to how many you want.
This is only a suggestion though...
if it doesnt work, compile the asm routine on pg6

Chris776x
April 28th, 2013, 09:26 AM
Well first off I apologize if this is in the wrong section, and for needing to ask...


Evolutions work without National Dex:At 0xCE91A change the next 4 bytes to 00 00 14 E0. This makes the previously conditional branch into an unconditional branch, which fixes the evolutions.


At the risk of sounding terrible can someone explain this to me? I'll admit I'm not the best scripter though just changing a couple bytes I can do that though when I opened XSE to 0xCE91A I got

'-----------------------
#org 0xCE91A
fadescreen 0x28
copyscriptbanks 0xDD 0x11
comparefarbytetofarbyte 0x22018128 0x4807836A
bufferpcitem 0x78 0x88
warp4 0x18 0xC0 0x0 0x4450 0x8302
nop1



Which is already looking wrong to me... Though I did change the 0x22018128 to 0x000014E0 which would always compile to 0x800014E0 and would break the game when an evolution happened... So I changed that back and tried then I changed the 0x4807836A to 0x000014E0 which also kept going to 0x800014E0 which when I tried to evolve The animation did happen correctly the Natu became a Xatu though it still said Natu stopped evolving and left me with Natu...
So yeah.. Im out of ideas... any help would be appreciated..

GoGoJJTech
April 28th, 2013, 09:55 AM
Dude, bytes as in open it in a hex editor and change the bytes...
You cant script everything unless otherwise specified to open in a script editor, but you need to know the difference

Spherical Ice
May 19th, 2013, 12:31 PM
Hm, for some reason my ROM crashes when I evolve my Mudkip and haven't unlocked the National Dex, even though I changed the bytes as listed in the OP. Has anyone else encountered this?

edit: For clarity, the evolution animation works perfectly, but then, after "Congratulations, your Mudkip evolved into Marshtomp!" appears and the red arrow is drawn on screen, the screen freezes and after a few seconds the game restarts. If I stop the evolution from happening midway then nothing freezes and it works as normal. This is FireRed of course and I'm using VBA.

edit 2: Hm, once I cancel the evolution and then level up Mudkip to 17, the evolution sequence works perfectly - this is true in two different maps. I'm testing a separate Hoenn Pokémon now.

edit 3: Weird, it only seems to apply to Mudkip. :/

GoGoJJTech
May 19th, 2013, 02:38 PM
maybe it's because it's trying to learn mud shot as soon as it evolves... that could be the problem.

Spherical Ice
May 19th, 2013, 10:40 PM
maybe it's because it's trying to learn mud shot as soon as it evolves... that could be the problem.

Okay yeah that's definitely it, when I changed it so Marshtomp learns it at 17 the evolution works fine. I guess this is an actual problem with the routine then?

LusoTrainer
May 20th, 2013, 03:12 AM
Is there a way to change the values of Height and Width to metric units? Is there any limitation in space?

GoGoJJTech
May 20th, 2013, 03:56 AM
It must be the byte change messing with the loading routine for moves.

Jambo51
May 20th, 2013, 04:31 AM
Is there a way to change the values of Height and Width to metric units? Is there any limitation in space?

They're stored in the game in metric units and converted to imperial at run time. You would simply have to turn off the conversion routine (pretty easy since it's just nop-ing a few opcodes) and change the strings which are at the end of them (the lbs and the ' " things).

Granted, all of the above requires knowing where this code is, but it's certainly possible to do.

chaosakita
July 1st, 2013, 11:50 AM
Is there any way to increase the number of Pokemon in the game without increasing the number of dex entries? I would like to have more Pokemon similar to the ????? in between Celebi and Treecko.

Faintx
July 9th, 2013, 09:09 AM
Hey guys, link in the OP was down, how do you add the 4th and 5th gen pokedex entries to a fire red rom? Can't figure out how! Or if someone can link me to a patch or something that adds in all of the new pokedex entries, that'd be appreicated! Thanks.

LusoTrainer
September 20th, 2013, 03:34 PM
They're stored in the game in metric units and converted to imperial at run time. You would simply have to turn off the conversion routine (pretty easy since it's just nop-ing a few opcodes) and change the strings which are at the end of them (the lbs and the ' " things).

Granted, all of the above requires knowing where this code is, but it's certainly possible to do.

And does anyone know where the conversion routine is located? Surely someone must have found it.

tanledesigner
October 2nd, 2013, 07:57 PM
setseen: ldr r1, newblock
there2: add r1, r1, r4
ldrb r2, [r1, #0x0]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1, #0x0]
b end Something wrong here i guess

0x7464C
0x7471C
0x7477C
0xCB160
0xCB16C
0x1037D4
0x103870
0x104C28

Repeat i again

Daniagnargjr
January 4th, 2014, 03:23 PM
When writing to the Pokémon's data, you risk changing something which should have an effect in the checksum. Without updating this checksum, the Pokémon will instantly become a Bad Egg.

My way of doing the formes avoids this potential problem by not writing to that area of data. It simply keeps the same Pokemon, calling the stat recalculator if necessary. It also takes much less space in terms of seperate data.

The code for gender differences is mixed in with the formes, since I reasoned that they were technically a variation on formes. Like Arceus however, nothing is directly stored to the Pokémon data which determines its gender, it is simply calculated on the fly as necessary. The Sprites are missing however.

Actually, the EGG is sprite 412. But that's nitpicking. To answer your question, I inserted a little bit of extra code at the sprite getting locations, with checks against the Sprite number and the Species ID (both are in the registers at this stage in FR). Simply, If it's Unown, I load a different table offset, and subtract the necessary number of sprites to make it fit, and if it's the EGG sprite ID, I check if the Pokémon the sprite request came from is an egg. Even if it is a Burmy AND an EGG, it will automatically display the EGG sprite until it hatches.

More complicated than necessary, but that's what happens when you forget that the Unown sprites (and EGG sprites) follow directly on from the "Normal" sprites.

EDITED TO ADD: I managed to get formes to recalculate stats when activated based on the current forme.




I just expanded the pokedex of Chinese language Fire Red to 493, all pointers of that translation are just same as US version.
After solving the saveblock problem, I found that the entries of the 412-493 which burmy start becoming bad egg (course I do have all of pokedex entries), it looks like mess up with the egg sprite and unknown...

Said it is possible to recognize EGG/unknown sprite ID with extra code at the sprite getting locations
Could you show me how to do that?
It will help me a lots...

Others like basestats or front pics work fine...(which just left that bag egg pokedex)


And to generate different Unknowns, why don't just make some script to do wildbattle with different unknowns' index id...
I tried it, and it works fine, but you need to repoint the moveset and basestats for them ,so it will be counted as different 28 unknowns
and check the caught flags of them would be possible to achieve DPP storyline...

GoGoJJTech
January 8th, 2014, 12:33 PM
I just expanded the pokedex of Chinese language Fire Red to 493, all pointers of that translation are just same as US version.
After solving the saveblock problem, I found that the entries of the 412-493 which burmy start becoming bad egg (course I do have all of pokedex entries), it looks like mess up with the egg sprite and unknown...

Said it is possible to recognize EGG/unknown sprite ID with extra code at the sprite getting locations
Could you show me how to do that?
It will help me a lots...

Others like basestats or front pics work fine...(which just left that bag egg pokedex)


And to generate different Unknowns, why don't just make some script to do wildbattle with different unknowns' index id...
I tried it, and it works fine, but you need to repoint the moveset and basestats for them ,so it will be counted as different 28 unknowns
and check the caught flags of them would be possible to achieve DPP storyline...

Well the 'dex slots for 413-65535 were not supported in Gamefreak's original coding. Instead it uses 412 as the last # possible (changeable, don't know how)
So there's a limit(s) on 412 which we must find to achieve victory. The 649 patch did, but I can't figure out just HOW. And Jambo51 quit hacking a while ago, so he's not helping us.