Go Back   The PokéCommunity Forums > ROM Hacking > Research & Development
Reload this Page Quick Research & Development Thread

Notices
For all updates, view the main page.

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!
Research & Development programs in this forum are subject to moderator approval before they are displayed.



Reply
 
Thread Tools
  #476    
Old May 5th, 2014 (08:05 PM).
Shiny Quagsire's Avatar
Shiny Quagsire Shiny Quagsire is offline
STOP HIM SAM, HE'S GONNA TELL US A STORY!!!
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 17
Gender: Male
Nature: Jolly
Posts: 690
Quote originally posted by vizor:
Isnt there any way creating OAM without using a entry in the template table? i mean the Overworlds are sureley not genereted due to this table, arent they?
NPCs are actually a lot more complicated due to their dynamic nature and interactability in the game. They have a lot of traits which makes them a tiny bit difficult to add in through ASM (I have yet to do it myself to be honest). And yes, every single OAM in the game is made using this method. While it seems difficult now, once it's created it's all downhill. GameFreak has methods for easily moving, scaling, rotating, and deleting these OAMs, which makes things much easier in the long run as opposed to making a GBA OAM.
__________________



Reply With Quote
  #477    
Old May 7th, 2014 (07:46 AM).
Mana's Avatar
Mana Mana is offline
Kariyai.
ModeratorCSEO
 
Join Date: Jan 2009
Location: UK
Gender: Male
Posts: 5,663
Possibly odd question, has anyone ever looked into/seen any research into removing the pokedex? Mainly, the pop-up when you catch a new pokemon?

I imagine it would take some hardwiring, since it's not something scripting could deal with - unless the sequence can be repointed/reorganised in hex I'm guessing it's an ASM job?
__________________
#teamHOENN
Moderator of The Roleplay Theatre
Reply With Quote
  #478    
Old May 8th, 2014 (06:03 AM).
vizor vizor is offline
 
Join Date: Dec 2011
Gender: Female
Posts: 24
It defenity is an ASM job, but it shouldn't be too hard, since there is some kind of switch case for the battle, which leads to certain parts that can be displayed during the battle (such as send new poke, attack and so on). There could be one entry that leads to the pokedex_information. You could simply change the pointer to another function, but there definitly is research needed.

Another question. I was reseraching an function, which updates all stats given on a pokemon, like the stat level, which is based on the ep, or the stat attack, wich is based on the baseATk, level, IV and EV.
To reach this aim i did a lot on reasearch at picking a pokemon from your box, because there a lot of data is cacluated, but i found not very much. All i got is (for a german firered)

sub_func at 0x08093078 (r0:int8 a, r1:int8 b) a = box ID, b = box nr. Pokemon is taken, if box ID = 0xe there is an exeption

/* takes pokemon from box, buffers its data into malloced RAM

has anybody ever found a fucntion that updates and recalcutes pokemon stats? because i want to make a species change, but the stats are not updating imideatly.
Reply With Quote
  #479    
Old May 8th, 2014 (07:02 AM).
daniilS's Avatar
daniilS daniilS is offline
busy trying to do stuff not done yet
 
Join Date: Aug 2013
Age: 15
Gender: Male
Posts: 381
Quote originally posted by vizor:
It defenity is an ASM job, but it shouldn't be too hard, since there is some kind of switch case for the battle, which leads to certain parts that can be displayed during the battle (such as send new poke, attack and so on). There could be one entry that leads to the pokedex_information. You could simply change the pointer to another function, but there definitly is research needed.

Another question. I was reseraching an function, which updates all stats given on a pokemon, like the stat level, which is based on the ep, or the stat attack, wich is based on the baseATk, level, IV and EV.
To reach this aim i did a lot on reasearch at picking a pokemon from your box, because there a lot of data is cacluated, but i found not very much. All i got is (for a german firered)

sub_func at 0x08093078 (r0:int8 a, r1:int8 b) a = box ID, b = box nr. Pokemon is taken, if box ID = 0xe there is an exeption

/* takes pokemon from box, buffers its data into malloced RAM

has anybody ever found a fucntion that updates and recalcutes pokemon stats? because i want to make a species change, but the stats are not updating imideatly.
I've got an offset somewhere, will send it later today.
__________________
Reply With Quote
  #480    
Old May 8th, 2014 (07:28 AM).
vizor vizor is offline
 
Join Date: Dec 2011
Gender: Female
Posts: 24
I already found one. Its located at SUB_0x0803E674 in Fire Red German.

You have to permitt: r0, int32: source of basicData(0x50 bytes) ;; r1, int32: destination of calcuated data (0x64 Bytes)
Reply With Quote
  #481    
Old May 8th, 2014 (11:11 PM).
slawter666 slawter666 is offline
 
Join Date: Sep 2008
Posts: 65
Is it possible for an overworld to use two palettes? I've been thinking about the idea of hacking the bike routine for ridable pokemon (Page 16 of this thread) and the pokemon and hero would need seperate palettes for the sprite to look good.
__________________
Reply With Quote
  #482    
Old May 9th, 2014 (08:48 AM).
Jambo51's Avatar
Jambo51 Jambo51 is offline
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Posts: 730
Quote originally posted by slawter666:
Is it possible for an overworld to use two palettes? I've been thinking about the idea of hacking the bike routine for ridable pokemon (Page 16 of this thread) and the pokemon and hero would need seperate palettes for the sprite to look good.
Without significant hacking of the game, no. The GBA is technically able to support such a sprite, but you would need to have intimate knowledge of the OAM system and how the palettes can be used in such a manner.

Basically, no, you can't do it.
__________________
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
Reply With Quote
  #483    
Old May 10th, 2014 (10:39 AM).
vizor vizor is offline
 
Join Date: Dec 2011
Gender: Female
Posts: 24
It definitley is possible, since any object of the OAM can use all 16 OAM-Palettes, if it is in 256 Col Mode.
BUT: you have to make the game set the bike Sprite to this mode,
you have to custom the palettes the way, that the sprite can use all 256 by not destroying other sprites

It definitley is possible, but no one would do this kind of job just for an simple object, since it would probably ♥♥♥♥ up with all other objects...
Just use an 16 colors palette, its way easier

Here is a quatation from GBATEK, if you intend to hack the OAM-system

Quote:
OBJ Attribute 0 (R/W)
Bit Expl. 0-7 Y-Coordinate (0-255) 8 Rotation/Scaling Flag (0=Off, 1=On) When Rotation/Scaling used (Attribute 0, bit 8 set): 9 Double-Size Flag (0=Normal, 1=Double) When Rotation/Scaling not used (Attribute 0, bit 8 cleared): 9 OBJ Disable (0=Normal, 1=Not displayed) 10-11 OBJ Mode (0=Normal, 1=Semi-Transparent, 2=OBJ Window, 3=Prohibited) 12 OBJ Mosaic (0=Off, 1=On) 13 Colors/Palettes (0=16/16, 1=256/1) 14-15 OBJ Shape (0=Square,1=Horizontal,2=Vertical,3=Prohibited) Caution: A very large OBJ (of 128 pixels vertically, ie. a 64 pixels OBJ in a Double Size area) located at Y>128 will be treated as at Y>-128, the OBJ is then displayed parts offscreen at the TOP of the display, it is then NOT displayed at the bottom.
Reply With Quote
  #484    
Old May 10th, 2014 (11:56 AM). Edited May 10th, 2014 by slawter666.
slawter666 slawter666 is offline
 
Join Date: Sep 2008
Posts: 65
Quote originally posted by vizor:
It definitley is possible, since any object of the OAM can use all 16 OAM-Palettes, if it is in 256 Col Mode.
BUT: you have to make the game set the bike Sprite to this mode,
you have to custom the palettes the way, that the sprite can use all 256 by not destroying other sprites

It definitley is possible, but no one would do this kind of job just for an simple object, since it would probably ♥♥♥♥ up with all other objects...
Just use an 16 colors palette, its way easier

Here is a quatation from GBATEK, if you intend to hack the OAM-system
What classifies as an OAM-palette? Because if it's just overworlds it would be easy enough to make it so each map only has a maximum of 14 overworlds with different palettes (leaving one for the player and one for the bike-pokemon).

EDIT: A workaround could be when the bike is selected create an overworld of the pokemon on the same spot that mimics the players movements. From the players point of view this would be exactly the same as if it is one object.
__________________
Reply With Quote
  #485    
Old May 11th, 2014 (05:46 AM). Edited May 11th, 2014 by Jambo51.
Jambo51's Avatar
Jambo51 Jambo51 is offline
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Posts: 730
Quote originally posted by slawter666:
What classifies as an OAM-palette? Because if it's just overworlds it would be easy enough to make it so each map only has a maximum of 14 overworlds with different palettes (leaving one for the player and one for the bike-pokemon).

EDIT: A workaround could be when the bike is selected create an overworld of the pokemon on the same spot that mimics the players movements. From the players point of view this would be exactly the same as if it is one object.
You're not getting it, sadly. While it IS possible to do, and in fact should be fairly simple from a coding standpoint, it's not something that can feasibly achieved as a hack to an existing game.

The GBA renders objects on a per object basis. Meaning that data for one object can be interpreted differently to another. You could feasibly store the bike sprite as an 8bpp image and then tell the GBA (using the OAM data) to interpret it as such, while leaving all other images in their native 4bpp format and having no ill effects.

The trick to this is that doing so as a hack is a lot harder than you would initially think, especially as you'd have to do it as a hook into the existing sprite object code for the bike.

I wasn't ever saying it wasn't physically possible, simply trying to get it across to you that it's not really feasible as a hack within the Game Freak developed system, since that system relies on the sprites being in 4bpp format.
__________________
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
Reply With Quote
  #486    
Old May 11th, 2014 (10:09 AM).
Derlo's Avatar
Derlo Derlo is offline
Working on Essence of light...
 
Join Date: Aug 2007
Posts: 115
Send a message via Skype™ to Derlo
Anyone know if it is possible to import the system of double battles in Emerald for the FR?
When we are in range of vision of two different NPCs, and get a Double Battle, and when standing in reach of only one, a normal battle.
__________________



Pokémon
Essence of Light

Comming Soon...
Reply With Quote
  #487    
Old May 12th, 2014 (05:42 AM). Edited May 12th, 2014 by vizor.
vizor vizor is offline
 
Join Date: Dec 2011
Gender: Female
Posts: 24
I used a german Firered Rom. Maybe my offsets are incorrect, but i dont think so, since reseraching was very easy...

.equ generate, 0x08006F0D
.equ OAM_thingy, 0x08231BCC
.equ callback, 0x08EE9ED
.equ buffer, 0x0202063C

i made the template dynamic, so i could use it for several objects. i placed it at a malloced offset, so its save to use. then i called the generate_sub func (sub_08A5007C does this at my rom), and transfered the right params. however my game freezes, after some time, and its not due to may code, since it is executed completley and corretcley and it also correctly returns to the scripthandler.

here is a screenshot of the point in my code, in which i spawn the OAM.

http://www.directupload.net/file/d/3621/aw7kvpan_png.htm
Reply With Quote
  #488    
Old May 12th, 2014 (09:18 PM).
Deokishisu's Avatar
Deokishisu Deokishisu is offline
Mr. Magius
 
Join Date: Feb 2006
Location: If I'm online, it's a safe bet I'm at a computer.
Gender: Male
Nature: Relaxed
Posts: 501
Wouldn't it be easier to piggyback on the code that handles the surfing sprite? I mean, the player and the blob Pokemon that is surfed on are two different images. If you want riding Pokemon, I feel like it would be much easier to start there. See if the surfing blob sprite can use a different palette than the player.
Reply With Quote
  #489    
Old May 12th, 2014 (11:41 PM). Edited May 12th, 2014 by Nerketur.
Nerketur's Avatar
Nerketur Nerketur is offline
PokéScripter
 
Join Date: Nov 2010
Location: Cyberspace
Gender: Male
Nature: Quirky
Posts: 102
A small bit of reasearch into the .bpc files in the PMD era of games leads to an interesting result. This is too small for a thread of its own, and I might not look at it past this, but I figured someone may be able to use it as a starting point or point me towards a tool that can already do this.

first byte is offset to first image data portion
Code:
0x0000:length of header (word)
Header:
Code:
0x0002: offset to next group/image?
0x04: ??
Image data section (relative offsets):
Code:
0x00: length of data-1 (Byte)
0xlength: what to do to the next section (byte)
    CA: (Unsure)
    CB: rows of 8px laid out normally, left to right, top to bottom
    CE: Rows are laid out from the end to beginning, right to left, bottom to top
    CF: (Unsure)
Aaaand that's all I know so far. But it's still a good insight. In case anyone else wants to explore it. I found this almost completely by accident, and I was so very excited to have even gotten that far. Best of luck to the person that finishes the job =D
__________________
Want my help in PokéScripting? PM me =)
I use XSE v1.1.1 (HackMew = awesome) and Advance Map 1.92.
Thanks to Diego and HackMew for their tutorials, helping me learn how to script!

Hacks I support 100% (MUST SEE!):


Very well made hacks:

My work:
Figuring out scripting in PMD
Entire script map of LeafGreen
PMDSE (Pokémon Mystery Dungeon Script Editor)
Reply With Quote
  #490    
Old May 13th, 2014 (02:25 AM).
GoGoJJTech's Avatar
GoGoJJTech GoGoJJTech is offline
http://GoGoJJTech.com (WIP!)
Gold Tier
 
Join Date: Nov 2012
Location: Earth
Age: 16
Gender: Female
Nature: Jolly
Posts: 2,078
Quote originally posted by Deokishisu:
Wouldn't it be easier to piggyback on the code that handles the surfing sprite? I mean, the player and the blob Pokemon that is surfed on are two different images. If you want riding Pokemon, I feel like it would be much easier to start there. See if the surfing blob sprite can use a different palette than the player.
No, since the surf sprite also uses the player's palette.
__________________
I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
Romhack.me Profile - Pokecommunity Profile - Pokemonhackersonline Profile - Youtube Channel

Join us in the romhacking chat
Pokémon Platinum Red and Blue
Reply With Quote
  #491    
Old May 13th, 2014 (01:38 PM).
SBird SBird is online now
 
Join Date: Aug 2009
Gender: Male
Posts: 64
I just came over an somehow interesting problem(at least one I have no solution for by now, I actually thought that was kind of easy)

I am basically looking for a routine that updates the palettes of a map, so the BG palettes and the OAM palettes. It does'nt have to update the tiles, but I don't care if it does (As long as this does not produce lagg, slowdowns or visual shinanigance since I would have to call those routines during the players movement)

What I already found is a routine that is sort of a soft_reset, it does not update the sprites though and it ignores rain, so if its currently raining and the routine is called, the screen is lit up. Basically such a thing has to exist because this is what happens when the player enters a warp or leaves the menu, but I wasn't able to find it.

Maybe someone had already had more luck than me :D

Oh btw. I am working on pokémon emerald (german) but if anyone has a routine offset that works for FRE I'll be happy as well because it's not too complicated to port such an offset since the games basically had the same base code which is firered.

~SBird
Reply With Quote
  #492    
Old May 17th, 2014 (10:40 PM).
Spherical Ice's Avatar
Spherical Ice Spherical Ice is online now
ModeratorCSGT
 
Join Date: Nov 2007
Location: Leicester, UK
Posts: 3,571
I'm not sure if I'm allowed to do this, but to prevent this info from getting lost I'm going to quote colcolstyles from here: http://www.pokecommunity.com/showpost.php?p=6360629&postcount=17122

Quote originally posted by colcolstyles:
Here are some of my findings:

Code:
0x1A654B : executed after battle fades, before "scurried home/to PC" text

0x16a2cb : viridian city 'sethealingplace' script (type 3)
0x1bc05c : 'special 0x182' script (type 5)

0x1A8DD8 : home script (mother heals your team)
0x1a8d97 : PokeCenter Script (Nurse Joy heals your team)
Basically this is what happens: after the battles fades, the game runs the script at 0x1A654B. Before the "player scurried to such and such place" text is displayed, the level scripts (types 3 & 5) are executed for the target map (there are none for the player's house). After the text is printed and the player presses A, the game fades back in to the player's new location and one of those two scripts is executed. As for which tile the player gets warped to, I'll have to do further research.
Again, I didn't discover this but I think it needs to be reposted because it took me quite some time to find it.
__________________
Reply With Quote
  #493    
Old May 19th, 2014 (12:48 PM).
daniilS's Avatar
daniilS daniilS is offline
busy trying to do stuff not done yet
 
Join Date: Aug 2013
Age: 15
Gender: Male
Posts: 381
Has anybody got any info on link functionality in FireRed? What I'm looking for specifically is how multi/tag battles work and how the other player's data is transfered.
__________________
Reply With Quote
  #494    
Old May 26th, 2014 (05:51 AM). Edited May 26th, 2014 by Spherical Ice.
Spherical Ice's Avatar
Spherical Ice Spherical Ice is online now
ModeratorCSGT
 
Join Date: Nov 2007
Location: Leicester, UK
Posts: 3,571
textcolor 0xFF reverts the text colour to the default colour for the person event's gender. This is information from DavidJCobb's repository on each of the commands in FireRed. He has since abandoned this, but in an effort to revive it and continue the documentation, I have hosted this repository with some revisions: http://www.sphericalice.co/romhacking/davidjcobb_script/

If you have any contributions you wish to add to this, please do share them either here, by PM/VMing, or by e-mailing me, and I'll add it to that repository. Hopefully we can expand it!
__________________
Reply With Quote
  #495    
Old May 27th, 2014 (05:14 AM).
kearnseyboy6's Avatar
kearnseyboy6 kearnseyboy6 is offline
Aussie's Toughest Mudder
 
Join Date: Dec 2008
Posts: 289
If you want to change a text box permanently navigate to 0x160450. There are pointer to textbox type 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6 etc.

Yes you can use XSE to decompile these scripts and feel free to add in anything you may desire.... permanently!

So you won't have to call the transparency asm in every script you want, it does it automatically.
__________________
HOLIDAYING CURRENTLY!!
Reply With Quote
  #496    
Old May 27th, 2014 (12:52 PM).
GoGoJJTech's Avatar
GoGoJJTech GoGoJJTech is offline
http://GoGoJJTech.com (WIP!)
Gold Tier
 
Join Date: Nov 2012
Location: Earth
Age: 16
Gender: Female
Nature: Jolly
Posts: 2,078
If you want a-map 1.92 to have support for new pokemon in the wild then follow these directions:
http://pastebin.com/13djBRnT
Originally found by Baitot :D
__________________
I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
Romhack.me Profile - Pokecommunity Profile - Pokemonhackersonline Profile - Youtube Channel

Join us in the romhacking chat
Pokémon Platinum Red and Blue
Reply With Quote
  #497    
Old May 29th, 2014 (06:00 AM).
SBird SBird is online now
 
Join Date: Aug 2009
Gender: Male
Posts: 64
Quote originally posted by GoGoJJTech:
If you want a-map 1.92 to have support for new pokemon in the wild then follow these directions:
http://pastebin.com/13djBRnT
Originally found by Baitot :D
This is indeed interesting, but it would be even more interesting if you used AM1.95, due to the fact that 1.92 is again unable to cope with 32MB romspace :T

~SBird
Reply With Quote
  #498    
Old May 29th, 2014 (08:50 AM).
GoGoJJTech's Avatar
GoGoJJTech GoGoJJTech is offline
http://GoGoJJTech.com (WIP!)
Gold Tier
 
Join Date: Nov 2012
Location: Earth
Age: 16
Gender: Female
Nature: Jolly
Posts: 2,078
Quote originally posted by SBird:
This is indeed interesting, but it would be even more interesting if you used AM1.95, due to the fact that 1.92 is again unable to cope with 32MB romspace :T

~SBird
Well although 1.95 does do that, it isn't stable. http://www.pokecommunity.com/showpost.php?p=7781039&postcount=304
The only 100% bug-free function in 1.95 is the block editor. Otherwise it'll corrupt your ROM slowly. This isn't good for Emerald hackers (you) who want extra space
Hence why most successful bug-free hacks use 1.92 instead.
__________________
I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
Romhack.me Profile - Pokecommunity Profile - Pokemonhackersonline Profile - Youtube Channel

Join us in the romhacking chat
Pokémon Platinum Red and Blue
Reply With Quote
  #499    
Old May 31st, 2014 (08:36 AM).
Kakarot1212's Avatar
Kakarot1212 Kakarot1212 is offline
Awesome as always...
 
Join Date: Oct 2013
Location: Phillipines
Gender: Male
Nature: Naughty
Posts: 507
Quote originally posted by GoGoJJTech:
If you want a-map 1.92 to have support for new pokemon in the wild then follow these directions:
http://pastebin.com/13djBRnT
Originally found by Baitot :D
Excuse me, is the "9C 01" the hex equivalent of numbers of pokemon?
Cause if you convert it, it would be "156 1" in numerical form.
Would you care to explain?
__________________

Chimcharz iz better than Mudkeepz
Pair 1 // Pair 2 // Showdown // PHO // Twitter
Text Hex Convert v2.1.1
Reply With Quote
  #500    
Old May 31st, 2014 (08:37 AM).
GoGoJJTech's Avatar
GoGoJJTech GoGoJJTech is offline
http://GoGoJJTech.com (WIP!)
Gold Tier
 
Join Date: Nov 2012
Location: Earth
Age: 16
Gender: Female
Nature: Jolly
Posts: 2,078
Quote originally posted by Kakarot1212:
Excuse me, is the "9C 01" the hex equivalent of numbers of pokemon?
Cause if you convert it, it would be "156 1" in numerical form.
Would you care to explain?
9C 01 = 01 9C = 019C = 19C = 412
__________________
I believe in Jesus Christ my Savior. If you do too, and aren't scared to admit it, then copy and paste this into your signature.
The HGSS Music Patch - The BW/2 Music Patch - ASM: Switch Music Based on Seasons
Romhack.me Profile - Pokecommunity Profile - Pokemonhackersonline Profile - Youtube Channel

Join us in the romhacking chat
Pokémon Platinum Red and Blue
Reply With Quote
Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are UTC -8. The time now is 02:53 PM.