The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > Creative Discussions > Emulation & ROM Hacking > Research & Development
Register New Account FAQ/Rules Chat Blogs Mark Forums Read

Notices

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!
New threads in this forum are to be approved by a moderator before they are displayed. The thread revival limit does not apply here.



Reply
Thread Tools
  #276  
Unread November 10th, 2012, 11:09 PM
Midnight Bear
Professional Procrastinator
 
Join Date: Mar 2007
Age: 19
Okay, I know this isn't exactly what this thread is for, but whatever.

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

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

What I was wondering, though, is - would it even be worth it to even release it once I finish working out the bugs? Sure, it makes it easier to implement custom evolution methods, but you still need to know ASM to even use it, and, so, the only people that would be able to even use it could do the exact same thing.
Reply With Quote
  #277  
Unread November 26th, 2012, 09:18 AM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 14
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Ok, I found this over at the pokahacking forum and it seems to be useful for legendary events! So I did not discovered this credits to Steven and Casta for some Info about this.

So ever wanted to make your game like a movie or something like that. xD Well you can you can now make something look like this.



So how to do it huh? Pretty easy just put this in your script.

Ruby:
Quote:
writebytetooffset 0x6C 0x4000044
writebytetooffset 0x23 0x4000045
Fire red:
Quote:
writebytetooffset 0x80 0x4000044
writebytetooffset 0x20 0x4000045
Emerald:
Quote:
writebytetooffset 0x7F 0x4000044
writebytetooffset 0x20 0x4000045
Just include them in every script that you want it only goes away after a warp to another place. That's all. :D

Credits:
Steven
Casta
__________________
Reply With Quote
  #278  
Unread November 27th, 2012, 09:40 AM
PokemonMasters's Avatar
PokemonMasters
Always Remember Forever&After
 
Join Date: Jun 2012
Location: Nuvema Town, Unova
Gender: Male
Nature: Calm
You can also use this for trailers and stuff. :D
__________________

+ForeverDash on PC's Battle Server | Pair | VM/PM |Partner In Crime
Reply With Quote
  #279  
Unread November 27th, 2012, 09:43 AM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 14
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Quote:
Originally Posted by PokemonMasters View Post
You can also use this for trailers and stuff. :D
Yes and cutscenes as well including flashbacks and it would be awesome! :D
__________________
Reply With Quote
  #280  
Unread November 27th, 2012, 10:00 AM
PokemonMasters's Avatar
PokemonMasters
Always Remember Forever&After
 
Join Date: Jun 2012
Location: Nuvema Town, Unova
Gender: Male
Nature: Calm
btw, does this have bugs?
__________________

+ForeverDash on PC's Battle Server | Pair | VM/PM |Partner In Crime
Reply With Quote
  #281  
Unread November 27th, 2012, 10:43 AM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 14
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Quote:
Originally Posted by PokemonMasters View Post
btw, does this have bugs?
As far as I know none. It only goes away after you warp.
__________________
Reply With Quote
  #282  
Unread December 1st, 2012, 06:38 AM
Team Fail's Avatar
Team Fail
Walk the walk // Talk the talk
 
Join Date: May 2009
Age: 18
Gender: Male
Nature: Brave
So today I discovered how to convert MIDI files to .SSEQ using official SDK tools. This was a test for modulation, however it seems the music file is broken. I presume it may be from when the music file was exported, though.



Attached is the MIDI, the text version of it, and the resulting SSEQ from the video above. Just like GBA Music hacking, ladies and gentlemen.

I also ripped this from the executable to convert this wall of text into the SSEQ. IT'S ALL THE COMMANDS! :D

Edit: After about a day of work, I made my own totally custom .SDAT.
Attached Files
File Type: zip conversion process.zip‎ (39.4 KB, 7 views)
__________________

Last edited by Team Fail; December 2nd, 2012 at 07:02 AM.
Reply With Quote
  #283  
Unread December 8th, 2012, 12:38 AM
shiny quagsire's Avatar
shiny quagsire
I'm pixular!
 
Join Date: May 2009
Location: In a House, duh!
Age: 15
Gender: Male
Nature: Jolly
Quote:
Originally Posted by tajaros View Post
Ok, I found this over at the pokahacking forum and it seems to be useful for legendary events! So I did not discovered this credits to Steven and Casta for some Info about this.

So ever wanted to make your game like a movie or something like that. xD Well you can you can now make something look like this.



...
I actually found the other half of this that changes things to greyscale without doing any division or other crazy ASM. It's one RAM location:
Code:
0x02036E28
So just wrote a 0x1 to that offset for greyscale, and 0x2 for sepia (I think...). To reset, set it to 0x0.
__________________



Reply With Quote
  #284  
Unread December 8th, 2012, 02:26 AM
Darthatron's Avatar
Darthatron
巨大なトロール。
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 21
Gender: Male
Nature: Modest
hinkage messaged me about possibly removing the introduction part of the New Game function in FireRed. It was surprisingly easy. Pretty much entailed nulling some function calls and replacing one pointer.

Code:
0812ED1E: 00 00 00 00
0812ED2E: 00 00 00 00
0812EE3E: 00 00 00 00
0812EE48: 00 00 00 00
0812EE4E: 00 00 00 00
0812EE54: 00 00 00 00
0812EE60: 00 00 00 00
0812EE8C: D1 08 13 08
There's a small delay, though. I'm currently unsure about how to fix it.

EDIT: Nevermind. It only works if there is already a save file, for some reason.
__________________
あなた は しきしゃ です
わたし は ばか です

Last edited by Darthatron; December 8th, 2012 at 03:03 AM.
Reply With Quote
  #285  
Unread December 8th, 2012, 09:32 AM
Iacobus's Avatar
Iacobus
sǝɯɐɾ
 
Join Date: Dec 2003
Location: Belgium
Age: 21
Gender: Male
Quote:
Originally Posted by Darthatron View Post
EDIT: Nevermind. It only works if there is already a save file, for some reason.
You have to write a function that writes a temporary player and rival name to the right location. Then it will work, trust me The game tries to load those.
__________________
Reply With Quote
  #286  
Unread December 18th, 2012, 03:35 PM
InMooseWeTrust's Avatar
InMooseWeTrust
Jack of All Trades
 
Join Date: Jul 2007
Location: Lansdale, Pennsylvania, USA
Age: 20
Gender: Male
Nature: Careful
Send a message via ICQ to InMooseWeTrust Send a message via AIM to InMooseWeTrust Send a message via Windows Live Messenger to InMooseWeTrust Send a message via Yahoo to InMooseWeTrust Send a message via Skype™ to InMooseWeTrust
Is there a way to hack an unused ability (like Cacophony) into Snow Warning? Drought, Drizzle and Sand Stream are already in 3rd gen but I'd like to have the option in Fire Red for a Hail team in the same way.
__________________
Pokémon: Battles of the Past
Site Thread
Pokémon: Emerald Legend
Facebook Thread
Reply With Quote
  #287  
Unread December 24th, 2012, 08:47 PM
Agastya's Avatar
Agastya
witty user title
 
Join Date: Feb 2010
Nature: Quiet
em swarms @0x58D094
species - 2
movepool - 8
level - 1 (i think)
map - 1 (i think, based on first map bank)

assuming this is correct, these are the swarms in this data block
Seedot Lv3, Route 102: Bide, Harden, Leech Seed
Nuzleaf Lv15, Route 115: Harden, Growth, Nature Power, Leech Seed
Seedot Lv13, Route 117: Harden, Growth, Nature Power, Leech Seed
Seedot Lv25, Route 120: Giga Drain, Frustration, Solarbeam, Leech Seed
Skitty Lv13, Route 116: Growl, Tackle, Tail Whip, Attract

they primarily have egg moves and they're primarily just seedot so idk
they really dont seem that special and theyre completely off from what other sites say so maybe theres another block of swarm data somewhere
__________________
Reply With Quote
  #288  
Unread January 22nd, 2013, 11:01 PM
shiny quagsire's Avatar
shiny quagsire
I'm pixular!
 
Join Date: May 2009
Location: In a House, duh!
Age: 15
Gender: Male
Nature: Jolly
The address at 0x030008c9 is a step counter that increases by three for each step. Just something I found while searching the RAM.
__________________



Reply With Quote
  #289  
Unread January 25th, 2013, 03:37 AM
SSJ4 Furanki's Avatar
SSJ4 Furanki
Got my Zoroark and everything!
 
Join Date: Jul 2006
Age: 19
Nature: Hasty
Is there a way to delete your rival from the naming process at the beginning of the game in FireRed?
__________________
Hacks I'm currently working on:
Reply With Quote
  #290  
Unread January 25th, 2013, 04:19 AM
Quickster's Avatar
Quickster
Dream or Drop?
 
Join Date: Oct 2007
Gender: Male
Nature: Quiet
Quote:
Originally Posted by SSJ4 Furanki View Post
Is there a way to delete your rival from the naming process at the beginning of the game in FireRed?
Hey, I figured Id link you to this page.

http://www.thepkmnworld.co.uk/v5/for...ce-centre.396/

If you look at the naming rival from overworld section, Im sure you could learn something as Jambo removes it, Im pretty sure at least.
__________________
I laugh looking at this.

But sometimes I want to come back to it...

Reply With Quote
  #291  
Unread January 25th, 2013, 07:08 AM
robin22gongon's Avatar
robin22gongon
Pocket Ninja; Coming Soon...
 
Join Date: Sep 2012
Location: Want to know? VM me.
Age: 15
Gender: Male
Nature: Quirky
Send a message via Windows Live Messenger to robin22gongon
Quote:
Originally Posted by Quickster View Post
Hey, I figured Id link you to this page.

http://www.thepkmnworld.co.uk/v5/for...ce-centre.396/

If you look at the naming rival from overworld section, Im sure you could learn something as Jambo removes it, Im pretty sure at least.
Uh... Could you just copy the thing written on your link and paste it here cause that site isn't available in my country?
Reply With Quote
  #292  
Unread January 25th, 2013, 07:41 AM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 14
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Quote:
Originally Posted by robin22gongon View Post
Uh... Could you just copy the thing written on your link and paste it here cause that site isn't available in my country?
Here..

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

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

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

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

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

To make this work, navigate to 0x103690, and change the pointer there to 0x1307D1.
__________________
Reply With Quote
  #293  
Unread January 25th, 2013, 07:17 PM
wwmb's Avatar
wwmb
Watcher
 
Join Date: Apr 2010
Gender: Male
Quote:
Originally Posted by Midnight Bear View Post
Okay, I know this isn't exactly what this thread is for, but whatever.

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

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

What I was wondering, though, is - would it even be worth it to even release it once I finish working out the bugs? Sure, it makes it easier to implement custom evolution methods, but you still need to know ASM to even use it, and, so, the only people that would be able to even use it could do the exact same thing.
I think that you should. And just because someone can do something... doesn't mean they would want to go through all the work of designing such a system, ironing out bugs, building it and so on.
Reply With Quote
  #294  
Unread January 25th, 2013, 10:18 PM
shiny quagsire's Avatar
shiny quagsire
I'm pixular!
 
Join Date: May 2009
Location: In a House, duh!
Age: 15
Gender: Male
Nature: Jolly
Quote:
Originally Posted by tajaros View Post
To make this work, navigate to 0x103690, and change the pointer there to 0x1307D1.
Actually, you wrote that down wrong. it's 0x130690, not 0x103690.
__________________



Reply With Quote
  #295  
Unread January 25th, 2013, 10:30 PM
tajaros's Avatar
tajaros
Hi I'm dawg
 
Join Date: Apr 2012
Location: Philippines
Age: 14
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to tajaros
Quote:
Originally Posted by shiny quagsire View Post
Actually, you wrote that down wrong. it's 0x130690, not 0x103690.
It's like that in Jambo's post so I'm not sure if that is the pointer.
__________________
Reply With Quote
  #296  
Unread January 28th, 2013, 07:35 AM
interdpth
Will ASM hack for cash.
 
Join Date: Jul 2004
Are camera addresses known? If so is there already hack that presents the 3D Pokemon games in First Person mode?
__________________
Check my blog!

http://interdpths.blogspot.com

I have GBA hacking info up and stuff and will answer any comments!
Reply With Quote
  #297  
Unread January 29th, 2013, 08:54 PM
wwmb's Avatar
wwmb
Watcher
 
Join Date: Apr 2010
Gender: Male
POKEMON EMERALD
I found something kind of wacky when I was messing with strings:

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

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

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


Probably useless. but still funny.
Reply With Quote
  #298  
Unread January 30th, 2013, 12:45 AM
FBI agent
Imagine something beautiful
 
Join Date: Jan 2013
Location: Isle 4 - Dairy Products
Gender: Male
Quote:
Originally Posted by Jambo51 View Post
So, last night, I worked out how type effectiveness is done in FireRed. You'll be pleased to know that it's relatively simple. Firstly, the method of storage:

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

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

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

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

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

However, the way it is implemented leaves something to be desired as it is very slow (looping over several entries), and taking up more space than needed, both in terms of code and data. It's obviously wasteful in so far as it continues to check even after having already found both effectiveness values, as well as the wasteful nature of the loop in and of itself.
Related thread:
http://www.pokecommunity.com/showthread.php?t=83674
__________________
...

Hacks I support:
http://www.pokecommunity.com/showthread.php?t=297199 --Legend of Anbuja
http://www.pokecommunity.com/showthread.php?t=200227 -- Pokemon Rose version

People I work for:
Scripter
Anbuja's_BlooDY -- Legend of Anbuja

FYI:
- You can ask me for scripting help
- I take simple ASM requests

People whom I thank:
Comrade -- For helping me with my bad hack, and for being a good friend
Darthatron -- Helping me get into basic ASM, even though I'm hopeless. (He is heartless stay away).
Anbuja's_BlooDY -- Graphics help, and being a good friend
FBI -- For having the username I wanted
Reply With Quote
  #299  
Unread January 30th, 2013, 08:23 AM
Chaos Rush's Avatar
Chaos Rush
Pokémon DarkViolet restarting
 
Join Date: May 2007
Gender: Male
Nature: Adamant
Here are some offsets for the Pokedex HUD:
0x451F55 = X position of text list
0x451F56 = Y position of text list
0x451F5D = X position of Habitat picture
0x451F5E = Y position of Habitat picture
0x451F65 = X position of "Seen:__ Owned:__" box
0x451F66 = Y position of "Seen:__ Owned:__" box
0x451F61 = BG Palette number that habitat picture uses
0x4520C8 = # of list entries on main pokedex page (National Pokedex enabled only)

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

Pokémon DarkViolet

DS-style 64x64 Pokémon Sprite Resource
oh and you should probably check this out too

Guys, please stop VM/PMing me about ROM hacking questions. I'm not an "expert ROM hacker". I'm an artist.

Non-Pokémon hacks I support:
Sonic Classic Heroes
Sonic 3 Complete
Reply With Quote
  #300  
Unread February 3rd, 2013, 09:35 PM
karatekid552's Avatar
karatekid552
Scyther
 
Join Date: Nov 2012
Location: Do you really want to know? Really?
Gender: Male
Nature: Bold
Send a message via AIM to karatekid552 Send a message via Windows Live Messenger to karatekid552
Just some research on high #flags.

I have always used flags in the 1000's for my hacking, until tajaros showed me this post: http://www.pokecommunity.com/showthr...56#post6829256

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

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

This brings me to my question. Why? I know that flags 900 to A22 are completely off limits by the above research, but what about the rest? Where are they stored? Either vars 4090+ are stored in a non-DMA location or the flags above A22 aren't stored with the rest. Does anyone know anything about these high number flags?
__________________
If you didn't do it like a BOSS, you didn't do it RIGHT!
Just some of the more BOSS Pokemon....
People and Hacks I support:

Hacks I own:
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. The time now is 09:55 PM.


Style by Perdition Haze, artwork by Sa-Dui.
Like our Facebook Page Follow us on TwitterMessage Board Statistics | © 2002 - 2013 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to Pokémon USA, Inc. and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company, Pokémon USA, Inc., The Pokémon Company International, or Wizards of the Coast. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2013 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User posts belong to the user.