The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > ROM Hacking Hub
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

ROM Hacking Hub General discussions about ROM Hacking and Emulation. Not sure where to start? This is the place for you.
Posting links to ROMs is illegal and is not tolerated anywhere on the forum.
New threads in this forum are to be approved by a moderator before they are displayed.


Advertise here

Closed Thread
Click here to go to the first staff post in this thread.  
Thread Tools
  #19151    
Old July 30th, 2011, 12:33 PM
Cheesewig's Avatar
Cheesewig
Hi!
 
Join Date: Jul 2011
Gender: Male
Nature: Relaxed

Advertise here
I edited the sprite with RAM finally but when I enter a building the sprite changes to something I don't want.

It was normal: I changed into the Rival but I entered my house and I turned into Mom. I went into a pokémart and changed to a random guy.

What am I doing wrong?

Here's my script:
Spoiler:
#org 0x123100
playsound 0x1
writebyte 0xD1FF 0x3C
end
__________________
My name is Aochider I was called . Dr. PET was loved and esteemed by us all!

Last edited by Cheesewig; July 30th, 2011 at 12:44 PM.
  #19152    
Old July 30th, 2011, 07:11 PM
Cherrysa23
Beginning Trainer
 
Join Date: Apr 2009
Gender:
hi!

I've been searching for 1 hour, how to edit the intro with prof birch, and the starting map of pokemon ruby (which is the truck, and I don't find this map) and also, I don't find the script for the mother first speech...

if there is already a thread, please tell me, because Idon,t find it
  #19153    
Old July 30th, 2011, 07:33 PM
PokemonPurple's Avatar
PokemonPurple
Beginning Trainer
 
Join Date: Jul 2011
Pokemon Emerald 1.0
XSE
Advance Map
---

How could I make the "tree" person event be able to be cut?

Thanks guys. <3
__________________
Pokemon Purple: 10% Done ||||||||||
Dream Team -
Click Here for Pokemon: Purple Website!
  #19154    
Old July 30th, 2011, 07:48 PM
Darthatron's Avatar
Darthatron
巨大なトロール。
Community Supporter Tier 2
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 22
Gender: Male
Nature: Modest
Quote:
Originally Posted by PokemonPurple View Post
Pokemon Emerald 1.0
XSE
Advance Map
---

How could I make the "tree" person event be able to be cut?

Thanks guys. <3
Find a tree from the original Emerald and copy the script offset onto your new tree.
__________________
あなた は しきしゃ です
わたし は ばか です
  #19155    
Old July 30th, 2011, 09:38 PM
ZangoMango's Avatar
ZangoMango
Unhatched Egg
 
Join Date: Jul 2011
Gender: Male
Nature: Impish
Hey guys, in FR/LG, is it possible to edit the ghost of Marowak battle in Pokemon Tower so that it's a different Pokemon? I tried my best to go into the script and change it, but it kept reverting back to Marowak.

Quote:
Originally Posted by Lyzo View Post
Alright, I don't know much about PokeScript, sorry about that. The hidesprite command is for XSE, but pokescript should have it as well, but it's probably named differently, or it's a #raw... But I wouldn't know...

You should switch over to XSE anyway, seeing as PokeScript is quite outdated and unsupported anyway. It's much like pokescript, but a bit different, and so much easier to use!

You can get it here and here is a quite extensive tutorial. In this tutorial it also shows you how to get the person event number
Cool, thanks man. XSE sounds good, I'll definitely switch over.
  #19156    
Old July 30th, 2011, 09:46 PM
DrFuji's Avatar
DrFuji
Helfen, Wehren, Heilen
 
Join Date: Sep 2009
Location: Upside-downia
Age: 21
Gender: Male
Nature: Jolly
Quote:
Originally Posted by ZangoMango View Post
Hey guys, in FR/LG, is it possible to edit the ghost of Marowak battle in Pokemon Tower so that it's a different Pokemon? I tried my best to go into the script and change it, but it kept reverting back to Marowak.
You can't change the Pokemon which you battle in a regular FR ROM. JPAN's Hacked ROM has a special that allows you to battle other ghost Pokemon so I'd suggest trying it out.
__________________
  #19157    
Old July 31st, 2011, 01:09 AM
DuoRyan's Avatar
DuoRyan
Hack'in as usual, it seem.
 
Join Date: Nov 2009
Location: Somewhere.
Age: 17
Gender: Male
Nature: Calm
How do you make the press start in the titlescreen flash?
__________________
Pokemon Treasure.
Progress: Planning.
  #19158    
Old July 31st, 2011, 01:56 AM
Cheesewig's Avatar
Cheesewig
Hi!
 
Join Date: Jul 2011
Gender: Male
Nature: Relaxed
Is there a way to create new maps in Pokemon Gold
__________________
My name is Aochider I was called . Dr. PET was loved and esteemed by us all!
  #19159    
Old July 31st, 2011, 02:32 AM
Darthatron's Avatar
Darthatron
巨大なトロール。
Community Supporter Tier 2
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 22
Gender: Male
Nature: Modest
Quote:
Originally Posted by DuoRyan View Post
How do you make the press start in the titlescreen flash?
In Ruby/Sapphire/Emerald, part of the tileset is cleared and reloaded every X frames, so you need to use that part of the tileset for the "Press Start" words.* In FireRed/LeafGreen, the a certain palette is changed to all black and reloaded every few frames, so you have to set that part of the tilemap to use that palette.*

*All from memory, may be wrong.
__________________
あなた は しきしゃ です
わたし は ばか です
  #19160    
Old July 31st, 2011, 04:02 AM
Cheesewig's Avatar
Cheesewig
Hi!
 
Join Date: Jul 2011
Gender: Male
Nature: Relaxed
Is there a support banner creator anwhere
__________________
My name is Aochider I was called . Dr. PET was loved and esteemed by us all!
  #19161    
Old July 31st, 2011, 10:01 AM
phinamthi's Avatar
phinamthi
Steel Type Trainer
 
Join Date: Jul 2011
Location: South Jersey
Gender: Male
Nature: Modest
-Firered
I was trying to import the hero sprite, but it gives me this message

Error during bitmap loading.
The palette of the bitmap you are goint to import is not a 16 color one

Yes that "goint" is actually there, so can anyone help?
  #19162    
Old July 31st, 2011, 11:10 AM
Banjora Marxvile's Avatar
Banjora Marxvile
Oui Oui Si Si Ja Ja Da Da
 
Join Date: May 2008
Age: 20
Gender: Male
Nature: Lonely
Quote:
Originally Posted by phinamthi View Post
-Firered
I was trying to import the hero sprite, but it gives me this message

Error during bitmap loading.
The palette of the bitmap you are goint to import is not a 16 color one

Yes that "goint" is actually there, so can anyone help?
You need to index the sprite you are inserting into 16 pallettes. I suggest using Irfanview for this, then Decrease Colour Depth to 16, unchecking the dithering option.

goint was perhaps meant to be going.
__________________

Man of Steel
He harbors no shame
Got cut a raw deal
But he holds no blame
Gone and forgot to feel
Numb for pretentious pain
As he spins the wheel
There's no loss nor no gain...


Nerves o
f Steel
He must remain
Even if it kills
To remember my name
A view to a thrill
Like Campari and Champagne
I'm on the rocks
Please tell me, What Is My Name?

  #19163    
Old July 31st, 2011, 11:19 AM
phinamthi's Avatar
phinamthi
Steel Type Trainer
 
Join Date: Jul 2011
Location: South Jersey
Gender: Male
Nature: Modest
Thanks, I understand now
  #19164    
Old July 31st, 2011, 05:49 PM
DavidJCobb
RESIDENT RAAAAAAAAAAAAGEMASTER
 
Join Date: Jul 2010
Gender: Male
Nature: Lonely
This question is most certainly out of place in a thread for "simple" questions, but the lack of any easily-findable ASM Questions thread leaves me with no recourse but to post here.

JPAN's FireRed Hacked Engine contains specials that copy and decrypt the data of a Pokemon to a specific offset. I am trying to make an ASM function that will take that decrypted data, and change the Pokemon's Personality Value without corrupting the Pokemon -- the result being that upon re-encryption, the Pokemon's personality value (and all linked data) is changed while leaving other data intact. Naturally, this requires that I rearrange all four of the data substructures within the Pokemon data; ergo, this is something for which only ASM is appropriate.

(The purpose of this? Simple: a Pokemon's gender and nature are both determined by the least-significant byte of the personality value. An Unown's letter is determined by bits found in each byte of the personality value. An ASM function that copies the contents of variables 0x8001 and 0x8002 over the personality value without corrupting the Pokemon allows one to set the letter of an Unown, and the gender and nature of any other Pokemon using scripting.)

I have attempted to compile my ASM code using the compiler (GNU Assembler, or GAS) provided by HackMew in their ASM tutorial. The compiler gives me only a flurry of errors. I do not know if these are bugs in the compiler (word-of-mouth says it's unreliable) or in my code.

The code, a commented alternate version -- comments broke the compiler, which is ridiculous in more ways than I can count -- and the compiler output, respectively:

Spoiler:
Code:
.text
.align 2
.thumb
.thumb_func

main:
    push {r0-r7, lr}
    ldr r0, .VAR_8001
    ldr r1, .DECRYPTED_POKEMON
    str r0, [r1, #0x0]
        ldr r0, .DECRYPTED_POKEMON
        ldrb r0, [r0, #0x0]
    mov r1, #24
    swi #0x06
    mov r0, r1
    ldr r1, .PTR_SUBSTRUCT_G
    mov r2, #0x0C
    ldr r3, .Cobb_storage
    bl CopyDataChunk
    ldr r1, .PTR_SUBSTRUCT_A
    mov r2, #0x0C
    ldr r3, .Cobb_storage
    add r3, #0x0C
    bl CopyDataChunk
    ldr r1, .PTR_SUBSTRUCT_E
    mov r2, #0x0C
    ldr r3, .Cobb_storage
    add r3, #0x18
    bl CopyDataChunk
    ldr r1, .PTR_SUBSTRUCT_M
    mov r2, #0x0C
    ldr r3, .Cobb_storage
    add r3, #0x24
    bl CopyDataChunk
    b DoWriting

CopyDataChunk:
    ldr r4, [r1, #0x0]
    str r4, [r3, #0x0]
    add r1, #0x4
    add r3, #0x4
    sub r2, #0x4
    cmp r2, #0x0
    bne CopyDataChunk
    pop {pc}

WriteSlot:
    mov r4, #0xC
    mul r1, r4
    sub r1, r4
    mul r2, r4
    sub r2, r4
    mov r4, r1
    ldr r3, .SUBSTRUCT_1
    add r3, r1
    mov r5, r3
    ldr r1, .Cobb_storage
    add r1, r2
    mov r2, #0xC
    bl CopyDataChunk
    pop {pc}

WriteG:
    mov r2, #0x1
    bl WriteSlot
    ldr r4, .PTR_SUBSTRUCT_G
    str r4, [r5, #0x0]
    pop {pc}
WriteA:
    mov r2, #0x2
    bl WriteSlot
    ldr r4, .PTR_SUBSTRUCT_A
    str r4, [r5, #0x0]
    pop {pc}
WriteE:
    mov r2, #0x3
    bl WriteSlot
    ldr r4, .PTR_SUBSTRUCT_E
    str r4, [r5, #0x0]
    pop {pc}
WriteM:
    mov r2, #0x4
    bl WriteSlot
    ldr r4, .PTR_SUBSTRUCT_M
    str r4, [r5, #0x0]
    pop {pc}


DoWriting:
    cmp r0, #0x00
    beq Write_GAEM
    cmp r0, #0x01
    beq Write_GAME
    cmp r0, #0x02
    beq Write_GEAM
    cmp r0, #0x03
    beq Write_GEMA
    cmp r0, #0x04
    beq Write_GMAE
    cmp r0, #0x05
    beq Write_GMEA
    cmp r0, #0x06
    cmp r0, #0x07
    beq Write_AGEM
    cmp r0, #0x08
    beq Write_AGME
    cmp r0, #0x09
    beq Write_AEGM
    cmp r0, #0x0A
    beq Write_AEMG
    cmp r0, #0x0B
    beq Write_AMGE
    cmp r0, #0x0C
    beq Write_AMEG
    cmp r0, #0x0D
    beq Write_EGAM
    cmp r0, #0x0E
    beq Write_EGMA
    cmp r0, #0x0F
    beq Write_EAGM
    cmp r0, #0x10
    beq Write_EAMG
    cmp r0, #0x11
    beq Write_EMGA
    cmp r0, #0x12
    beq Write_EMAG
    cmp r0, #0x13
    beq Write_MGAE
    cmp r0, #0x14
    beq Write_MGEA
    cmp r0, #0x15
    beq Write_MAGE
    cmp r0, #0x16
    beq Write_MAEG
    cmp r0, #0x17
    beq Write_MEGA
    cmp r0, #0x18
    beq Write_MEAG
    b End

Write_GAEM:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteM
    b End
Write_GAME:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteE
    b End
Write_GEAM:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteM
    b End
Write_GEMA:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteA
    b End
Write_GMAE:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteE
    b End
Write_GMEA:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteA
    b End

Write_AGEM:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteM
    b End
Write_AGME:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteE
    b End
Write_AEGM:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteM
    b End
Write_AEMG:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteG
    b End
Write_AMGE:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteE
    b End
Write_AMEG:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteG
    b End

Write_EGAM:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteM
    b End
Write_EGMA:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteA
    b End
Write_EAGM:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteM
    b End
Write_EAMG:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteG
    b End
Write_EMGA:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteA
    b End
Write_EMAG:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteG
    b End

Write_MGAE:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteE
    b End
Write_MGEA:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteA
    b End
Write_MAGE:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteE
    b End
Write_MAEG:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteG
    b End
Write_MEGA:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteA
    b End
Write_MEAG:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteG
    b End

End:
    pop {r0-r7, pc}

.align 2
.JPAN_storage:
    .word 0x0203f400
.Cobb_storage:
    .word 0x02030000
.DECRYPTED_POKEMON:
    .word 0x0203F400
.PTR_SUBSTRUCT_G:
    .word 0x0203F464
.PTR_SUBSTRUCT_A:
    .word 0x0203F468
.PTR_SUBSTRUCT_E:
    .word 0x0203F46C
.PTR_SUBSTRUCT_M:
    .word 0x0203F470
.SUBSTRUCT_1:
    .word 0x0203F432
.SUBSTRUCT_2:
    .word 0x0203F43E
.SUBSTRUCT_3:
    .word 0x0203F44A
.SUBSTRUCT_4:
    .word 0x0203F458
.VAR_8001:
    .word 0x020270B6 + (0x8001 * 2)
.VAR_8002:
    .word 0x020270B6 + (0x8002 * 2)
.LASTRESULT:
    .word 0x020270B6 + (0x800D * 2)


Spoiler:
Code:
@ assembling directives for assembler thing
.text
.align 2 @ Code offset must be multiple of 2
.thumb   @ we are writing THUMB code
.thumb_func

@ we're using RAM from 02030000 - 02030030
@ if we apply a hack that uses that RAM, we 
@ must edit this ASM and re-insert it into 
@ the game.

@ start execution, with a defined label
main:
    @ backup registers
    Push{r0-r7,lr}

    @ script code

    @ overwrite the personality value
    @ based on the values of 0x8001 
    @ and 0x8002.
    ldr r0, .VAR_8001
    ldr r1, .DECRYPTED_POKEMON
    str r0, [r1, #0x0]

        @ find new arrangement
        ldr r0, .DECRYPTED_POKEMON
    @ store least significant byte of personality value
        ldrb r0, [r0, #0x0]
    mov r1, #24
    @ division, using a BIOS function
    swi #0x06
    @ transfer result of r0 % r1 from r1 to r0
    mov r0, r1

    @ copy G data to an available place in RAM
    ldr r1, .PTR_SUBSTRUCT_G
    mov r2, #0x0C
    ldr r3, .Cobb_storage
    bl CopyDataChunk

    ldr r1, .PTR_SUBSTRUCT_A
    mov r2, #0x0C
    ldr r3, .Cobb_storage
    add r3, #0x0C
    bl CopyDataChunk

    ldr r1, .PTR_SUBSTRUCT_E
    mov r2, #0x0C
    ldr r3, .Cobb_storage
    add r3, #0x18
    bl CopyDataChunk

    ldr r1, .PTR_SUBSTRUCT_M
    mov r2, #0x0C
    ldr r3, .Cobb_storage
    add r3, #0x24
    bl CopyDataChunk

    b DoWriting

CopyDataChunk:
    @  IN r1        pointer: source data chunk (as number value)
    @  IN r2                 length of source
    @  IN r3        pointer: target data chunk (as number value)
    @     r4        Throwaway variable, will be overwritten
    ldr r4, [r1, #0x0]
    str r4, [r3, #0x0]
    add r1, #0x4
    add r3, #0x4
    sub r2, #0x4
    cmp r2, #0x0
    bne CopyDataChunk
    pop {pc}

WriteSlot:
    @ REQ CopyDataChunk
    @ IN  r1        data substructure slot to write to (1-4)
    @ IN  r2        data substructure (1-4 = G,A,E,M)
    @     r3        Throwaway (parameter to subfunction)
    @     r4        Throwaway (here and subfunction)
    @ OUT r5        computed target address
    mov r4, #0xC
    mul r1, r4
    sub r1, r4
    mul r2, r4
    sub r2, r4
    mov r4, r1
    ldr r3, .SUBSTRUCT_1
    add r3, r1
    mov r5, r3
    ldr r1, .Cobb_storage
    add r1, r2
    mov r2, #0xC
    bl CopyDataChunk
    pop {pc}

WriteG:
    @ REQ WriteSlot
    @   > CopyDataChunk
    @ IN  r1        data substructure slot to write to (1-4)
    @     r2        Throwaway (parameter to subfunction)
    @     r3        Throwaway (parameter to subfunction)
    @     r4        Throwaway (here and subfunction)
    @     r5        address to write to one of JPAN's pointers
    mov r2, #0x1
    bl WriteSlot
    ldr r4, .PTR_SUBSTRUCT_G
    str r4, [r5, #0x0]
    pop {pc}
WriteA:
    mov r2, #0x2
    bl WriteSlot
    ldr r4, .PTR_SUBSTRUCT_A
    str r4, [r5, #0x0]
    pop {pc}
WriteE:
    mov r2, #0x3
    bl WriteSlot
    ldr r4, .PTR_SUBSTRUCT_E
    str r4, [r5, #0x0]
    pop {pc}
WriteM:
    mov r2, #0x4
    bl WriteSlot
    ldr r4, .PTR_SUBSTRUCT_M
    str r4, [r5, #0x0]
    pop {pc}


DoWriting:
    @ BRANCH CALLS GO HERE
    @ IN  r0        New personality value modulo 24
    @     r1        Throwaway (subfunction)
    @     r2        Throwaway (subfunction)
    @     r3        Throwaway (subfunction)
    @     r4        Throwaway (subfunction)
    @     r5        Throwaway (subfunction)

    cmp r0, #0x00
    beq Write_GAEM
    cmp r0, #0x01
    beq Write_GAME
    cmp r0, #0x02
    beq Write_GEAM
    cmp r0, #0x03
    beq Write_GEMA
    cmp r0, #0x04
    beq Write_GMAE
    cmp r0, #0x05
    beq Write_GMEA
    cmp r0, #0x06

    cmp r0, #0x07
    beq Write_AGEM
    cmp r0, #0x08
    beq Write_AGME
    cmp r0, #0x09
    beq Write_AEGM
    cmp r0, #0x0A
    beq Write_AEMG
    cmp r0, #0x0B
    beq Write_AMGE
    cmp r0, #0x0C
    beq Write_AMEG

    cmp r0, #0x0D
    beq Write_EGAM
    cmp r0, #0x0E
    beq Write_EGMA
    cmp r0, #0x0F
    beq Write_EAGM
    cmp r0, #0x10
    beq Write_EAMG
    cmp r0, #0x11
    beq Write_EMGA
    cmp r0, #0x12
    beq Write_EMAG

    cmp r0, #0x13
    beq Write_MGAE
    cmp r0, #0x14
    beq Write_MGEA
    cmp r0, #0x15
    beq Write_MAGE
    cmp r0, #0x16
    beq Write_MAEG
    cmp r0, #0x17
    beq Write_MEGA
    cmp r0, #0x18
    beq Write_MEAG

    b End

Write_GAEM:
    @ G
    mov r1, #0x1
    bl WriteG
    @ A
    mov r1, #0x2
    bl WriteA
    @ E
    mov r1, #0x3
    bl WriteE
    @ M
    mov r1, #0x4
    bl WriteM
    b End
Write_GAME:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteE
    b End
Write_GEAM:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteM
    b End
Write_GEMA:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteA
    b End
Write_GMAE:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteE
    b End
Write_GMEA:
    mov r1, #0x1
    bl WriteG
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteA
    b End

Write_AGEM:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteM
    b End
Write_AGME:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteE
    b End
Write_AEGM:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteM
    b End
Write_AEMG:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteG
    b End
Write_AMGE:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteE
    b End
Write_AMEG:
    mov r1, #0x1
    bl WriteA
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteG
    b End

Write_EGAM:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteM
    b End
Write_EGMA:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteA
    b End
Write_EAGM:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteM
    b End
Write_EAMG:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteM
    mov r1, #0x4
    bl WriteG
    b End
Write_EMGA:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteA
    b End
Write_EMAG:
    mov r1, #0x1
    bl WriteE
    mov r1, #0x2
    bl WriteM
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteG
    b End

Write_MGAE:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteE
    b End
Write_MGEA:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteG
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteA
    b End
Write_MAGE:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteE
    b End
Write_MAEG:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteA
    mov r1, #0x3
    bl WriteE
    mov r1, #0x4
    bl WriteG
    b End
Write_MEGA:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteG
    mov r1, #0x4
    bl WriteA
    b End
Write_MEAG:
    mov r1, #0x1
    bl WriteM
    mov r1, #0x2
    bl WriteE
    mov r1, #0x3
    bl WriteA
    mov r1, #0x4
    bl WriteG
    b End

End:
    @ restore registers and return
    Pop{r0-r7,pc}

.align 2
.JPAN_storage:
    .word 0x0203f400
.Cobb_storage:
    .word 0x02030000
.DECRYPTED_POKEMON:
    .word 0x0203F400
.PTR_SUBSTRUCT_G:
    .word 0x0203F464
.PTR_SUBSTRUCT_A:
    .word 0x0203F468
.PTR_SUBSTRUCT_E:
    .word 0x0203F46C
.PTR_SUBSTRUCT_M:
    .word 0x0203F470
.SUBSTRUCT_1:
    .word 0x0203F432
.SUBSTRUCT_2:
    .word 0x0203F43E
.SUBSTRUCT_3:
    .word 0x0203F44A
.SUBSTRUCT_4:
    .word 0x0203F458
.VAR_8001:
    .word 0x020270B6 + (0x8001 * 2)
.VAR_8002:
    .word 0x020270B6 + (0x8002 * 2)
.LASTRESULT:
    .word 0x020270B6 + (0x800D * 2)


Spoiler:
Code:
C:\Users\David\Desktop\Cobb Fam Desktop\Miscellaneous\rawrms\tules\THUMB ASM Com
piler>thumb pv_asm_ncom.asm pv_asm_ncom.bin
pv_asm_ncom.asm: Assembler messages:
pv_asm_ncom.asm:60: Warning: Failed to find real start of function: CopyDataChun
k

pv_asm_ncom.asm:65: Warning: Failed to find real start of function: WriteSlot

pv_asm_ncom.asm:71: Warning: Failed to find real start of function: WriteSlot

pv_asm_ncom.asm:77: Warning: Failed to find real start of function: WriteSlot

pv_asm_ncom.asm:83: Warning: Failed to find real start of function: WriteSlot

pv_asm_ncom.asm:143: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:145: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:147: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:149: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:153: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:155: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:157: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:159: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:163: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:165: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:167: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:169: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:173: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:175: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:177: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:179: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:183: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:185: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:187: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:189: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:193: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:195: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:197: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:199: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:204: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:206: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:208: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:210: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:214: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:216: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:218: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:220: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:224: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:226: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:228: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:230: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:234: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:236: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:238: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:240: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:244: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:246: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:248: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:250: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:254: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:256: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:258: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:260: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:265: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:267: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:269: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:271: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:275: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:277: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:279: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:281: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:285: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:287: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:289: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:291: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:295: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:297: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:299: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:301: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:305: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:307: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:309: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:311: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:315: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:317: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:319: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:321: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:326: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:328: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:330: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:332: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:336: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:338: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:340: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:342: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:346: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:348: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:350: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:352: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:356: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:358: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:360: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:362: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:366: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:368: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:370: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:372: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:376: Warning: Failed to find real start of function: WriteM

pv_asm_ncom.asm:378: Warning: Failed to find real start of function: WriteE

pv_asm_ncom.asm:380: Warning: Failed to find real start of function: WriteA

pv_asm_ncom.asm:382: Warning: Failed to find real start of function: WriteG

pv_asm_ncom.asm:108: Error: branch out of range
pv_asm_ncom.asm:110: Error: branch out of range
pv_asm_ncom.asm:112: Error: branch out of range
pv_asm_ncom.asm:114: Error: branch out of range
pv_asm_ncom.asm:116: Error: branch out of range
pv_asm_ncom.asm:118: Error: branch out of range
pv_asm_ncom.asm:120: Error: branch out of range
pv_asm_ncom.asm:122: Error: branch out of range
pv_asm_ncom.asm:124: Error: branch out of range
pv_asm_ncom.asm:126: Error: branch out of range
pv_asm_ncom.asm:128: Error: branch out of range
pv_asm_ncom.asm:130: Error: branch out of range
pv_asm_ncom.asm:132: Error: branch out of range
pv_asm_ncom.asm:134: Error: branch out of range
pv_asm_ncom.asm:136: Error: branch out of range
pv_asm_ncom.asm:138: Error: branch out of range

C:\Users\David\Desktop\Cobb Fam Desktop\Miscellaneous\rawrms\tules\THUMB ASM Com
piler>


P.S. I am aware that my ASM is horrendously inelegant. It's the first such code I have ever written. It's the best way I could find to do what I am attempting to do.

P.P.S. If you're wondering what the comments regarding JPAN's pointers are, in my ASM code... JPAN's special stores pointers to the Pokemon's data substructures. I do not know if the other custom specials rely on those pointers. In case they do, my ASM will, after reordering the data substructures, replace those pointers so that they point to the proper sections. This would prevent problems from arising should one use one of JPAN's other Pokemon-modifying specials after using my ASM, but before re-encrypting.

...

So, does anyone know what's wrong? D:
__________________

Last edited by DavidJCobb; July 31st, 2011 at 06:02 PM.
  #19165    
Old July 31st, 2011, 06:56 PM
Cherrysa23
Beginning Trainer
 
Join Date: Apr 2009
Gender:
hi!
I wanted to make a hack of ruby which I will expand the pokemon bank.

before doing so, I just want to make sure no one did.... I look in the post and found nothing... can someone confirm me no one ever did it? I found nothing for it...
  #19166    
Old July 31st, 2011, 09:48 PM
mystletainn's Avatar
mystletainn
Master of the Elements
Community Supporter
 
Join Date: Jun 2007
Location: New York
Age: 25
Gender: Male
Nature: Naughty
You posted this in the Game Development section which is not for hack-related questions. So I've moved it to the ROM hacking forum and merged it with the Quick Questions thread!
__________________
  #19167    
Old July 31st, 2011, 10:36 PM
Gamer2020's Avatar
Gamer2020
This love is a sickness...
 
Join Date: Jun 2008
Location: Violet city!
Gender: Male
Nature: Bold
Send a message via AIM to Gamer2020 Send a message via Windows Live Messenger to Gamer2020 Send a message via Yahoo to Gamer2020 Send a message via Skype™ to Gamer2020
Quote:
Originally Posted by Cherrysa23 View Post
hi!
I wanted to make a hack of ruby which I will expand the pokemon bank.

before doing so, I just want to make sure no one did.... I look in the post and found nothing... can someone confirm me no one ever did it? I found nothing for it...
Someone did do it once but that person never released it. You won't find a ruby version with extra pokemon so you must do it yourself.
__________________
Pokemon Game Editor Download!
  #19168    
Old August 1st, 2011, 12:16 PM
EdensElite's Avatar
EdensElite
No0b, but getting there.
 
Join Date: Jun 2011
Location: UK
Gender: Male
Nature: Bold
I've given up on my question now

Anyway, How do 'Steal' a Pokemon from a trainer? I assume it's just deleting the script that prevents you from stealing it?
__________________

ROM Hacking was getting frustrating for me. I've now stopped productions and writing the game from scratch in HTML 5.

That means it will be playable in the browser, and across multiple devices such as the iPod touch.
  #19169    
Old August 1st, 2011, 12:20 PM
Kevin's Avatar
Kevin
kevin del rey
Community Supporter
 
Join Date: Jul 2010
Location: Virginia
Age: 15
Gender: Male
How do you make overworlds disappear when you enter a map automatically, like after another event.

Sort of like when Team Rocket takes over a place, and after you defeat the boss all the grunts in the maps disappear?
__________________
  #19170    
Old August 1st, 2011, 12:21 PM
Lyzo's Avatar
Lyzo
On vacation
 
Join Date: Mar 2007
Location: The Netherlands
Age: 19
Gender: Male
Nature: Bold
Send a message via Windows Live Messenger to Lyzo
Quote:
Originally Posted by EdensElite View Post
I've given up on my question now

Anyway, How do 'Steal' a Pokemon from a trainer? I assume it's just deleting the script that prevents you from stealing it?
I assume you mean in battle use a pokeball? You can't simply 'delete' that script, because it isn't a script. It was written into the battle system, and you'd have to use ASM to skip the check for a trainerbattle when you use a pokeball. It's not easy to accomplish, and you'd need knowledge of ASM. So if you REALLY want to, go for it
__________________


Thank you The Blueprint !!!
  #19171    
Old August 1st, 2011, 12:54 PM
EdensElite's Avatar
EdensElite
No0b, but getting there.
 
Join Date: Jun 2011
Location: UK
Gender: Male
Nature: Bold
Quote:
Originally Posted by Lyzo View Post
I assume you mean in battle use a pokeball? You can't simply 'delete' that script, because it isn't a script. It was written into the battle system, and you'd have to use ASM to skip the check for a trainerbattle when you use a pokeball. It's not easy to accomplish, and you'd need knowledge of ASM. So if you REALLY want to, go for it
Oh...A Patch wouldn't go amiss if anybody wants to upload one with that already done Yeah thats exactly what I mean btw sort of like a Pokemon Colisseum sort of thing.
__________________

ROM Hacking was getting frustrating for me. I've now stopped productions and writing the game from scratch in HTML 5.

That means it will be playable in the browser, and across multiple devices such as the iPod touch.
  #19172    
Old August 1st, 2011, 01:25 PM
Lyzo's Avatar
Lyzo
On vacation
 
Join Date: Mar 2007
Location: The Netherlands
Age: 19
Gender: Male
Nature: Bold
Send a message via Windows Live Messenger to Lyzo
Quote:
Originally Posted by EdensElite View Post
Oh...A Patch wouldn't go amiss if anybody wants to upload one with that already done Yeah thats exactly what I mean btw sort of like a Pokemon Colisseum sort of thing.
Right, it's probably been done before by someone, but I doubt they'd have uploaded a patch... :\ Bring it up in the Research&Developement forum, in the question thread. People there could probably help you
__________________


Thank you The Blueprint !!!
  #19173    
Old August 1st, 2011, 01:25 PM
toeter
Beginning Trainer
 
Join Date: Jul 2010
Gender: Male
Hi, I would like to know if it is possible to link battle music to a specific trainer class in pokémon fire red. I'm not talking about inserting music from another rom. For example the LEADER trainer class is linked to battle 3(hex: 0128 advance map) and CHAMPION to battle 6(hex: 12B in advance map). How do I give someone like a tuber(or someone else) a specific trainer battle song, that is my question. I can't seem to find another way to play a specific song during battle.

Thanks anyway
  #19174    
Old August 1st, 2011, 01:34 PM
Surigamaru
 
 
Join Date: Oct 2010
Gender: Male
Nature: Calm
Quote:
Originally Posted by Destiny Demon View Post
How do you make overworlds disappear when you enter a map automatically, like after another event.

Sort of like when Team Rocket takes over a place, and after you defeat the boss all the grunts in the maps disappear?
After defeating the boss, a flag will be set within the battle script; the script that lets you battle the boss. When a flag value is put in the person ID of an OW sprite, the OW disappears. If you notice the grunt's person IDs, you'll find a certain value (eg. in Celadon City, the person ID of the grunt's outside is 005F). Now, if you decompile the script of the boss in the rocket hideout, you'll find a command setflag 0x5F. After it is set and with the flag value in the person ID of the grunts, all grunts with that ID (5F) will disappear.

I hope this helps.
  #19175    
Old August 1st, 2011, 04:52 PM
xionreaver
Beginning Trainer
 
Join Date: Jun 2009
I edited two maps for trial and error purposes(I'm new to this) and when I go from one map to the other, some of the tiles turn into seemingly random tiles. How would I fix this? I'm hacking Emerald.
Closed Thread
Quick Reply

Sponsored Links


Advertise here
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
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 09:52 PM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 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 generated content remains the property of its creator.