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!

Reply
 
Thread Tools
  #1    
Old January 27th, 2010 (8:10 AM).
Giga Universe's Avatar
Giga Universe Giga Universe is offline

Working on a tool.

  • Crystal Tier
 
Join Date: Aug 2007
Location: South Africa
Age: 22
Gender: Male
Nature: Calm
Posts: 121

Here is a topic that I have been mildly interested in. The idea is to built a script that can be activated during the game play, that allows the player to provide a custom name for a reoccurring character. I built a script that uses a nickname Pokémon Script, and stores the name on one of the buffers. However, I encountered two problems. First, the string buffers 1-3 are commonly used, and therefore would overwrite your rivals names. Second, using the nickname Pokémon Script provides more than 7 characters for the name, and would be inconvenient in dialogue. So, maybe someone could build a mod on the nickname script to force it to store the text in the RAM, usable like a buffer, and force the nickname script to only allow 7 characters? Since I have no ASM experience (I understand basic concepts, but can't code), I cannot investigate this further...

__________________

Reply With Quote

Relevant Advertising!

  #2    
Old January 27th, 2010 (9:12 PM).
liuyanghejerry's Avatar
liuyanghejerry liuyanghejerry is offline
     
    Join Date: Jan 2008
    Location: China,Xi'an
    Nature: Calm
    Posts: 219

    I don't understand you well.
    But using writebytetooffset/loadbytefrompointer/bufferstring commands may help you.

    __________________

    Zel,thethethethe,LU-HO,Darthatron,HackMew,ZodiacDaGreat,Juan,score_under,JPAN,Tamah-chan,I really appreciate your kindness and your help!:D

    Reply With Quote
      #3    
    Old January 28th, 2010 (3:32 AM). Edited October 23rd, 2010 by HackMew.
    HackMew's Avatar
    HackMew HackMew is offline

    Mewtwo Strikes Back

    • Crystal Tier
     
    Join Date: Jun 2006
    Posts: 1,314

    Using buffers is definitely not a good idea, indeed. Also, since the naming special works for Pokémon only, it needs to be hacked to eventually implement a custom rival/etc. naming. Aside from that, having custom names requires some reserved memory area for them. I'm thinking of variables, as with 4 variables you have 8 bytes which means 7 letters + string terminator (0xFF). Then, to use the name you could use the bufferstring command pointing to the first chosen variable address. Even though I never tried using bufferstring with a RAM pointer, it should work fine theoretically.

    __________________

    Reply With Quote
      #4    
    Old January 28th, 2010 (11:13 AM).
    NarutoActor's Avatar
    NarutoActor NarutoActor is offline
    The rocks cry out to me
    • Silver Tier
     
    Join Date: Jan 2009
    Location: Brooklyn/Marlboro
    Age: 23
    Gender: Female
    Nature: Bashful
    Posts: 1,979

    hmm... here is an idea, when it comes to memory can't you just over-ride the old nick name with the new one?

    __________________

    ~There are those people who understand hex, F the rest

    Reply With Quote
      #5    
    Old January 29th, 2010 (8:33 AM). Edited January 29th, 2010 by Giga Universe.
    Giga Universe's Avatar
    Giga Universe Giga Universe is offline

    Working on a tool.

    • Crystal Tier
     
    Join Date: Aug 2007
    Location: South Africa
    Age: 22
    Gender: Male
    Nature: Calm
    Posts: 121

    Making progress. Using Hackmew's suggestion of using variables, which hold 2 characters each, I created a simple script, which uses setvars to set bytes to make up the word 'Giverse'.

    Code:
    #dynamic 0x800000

    #org @start setvar 0x8000 0xDDC1 'store the Gi setvar 0x8001 0xD9EA 'store the ve setvar 0x8002 0xE7E6 'store the rs setvar 0x8003 0xFFD9 'store the e and the stop (0xFF) bufferstring 0x1 0x020370B8 'buffer data located at 0x8000 - 0x8003 message @1 0x6 end

    #org @1 = \v\h03

    So, you can buffer a RAM address, it works perfectly. All that needs to be done is make an ASM routine that stores the chosen name to a variable, and then limit the choice of characters to 7.

    EDIT:

    Modified the above script. It copies text stored in buffer 1 directly from the RAM into the variable storage space. It has a custom nickname screen. But it does not limit to 7 characters. Right now, it shows a Bulbsaur instead of a Overworld, and says: "What will Balbasuar's nickname be?"

    Code:
    #dynamic 0x800000

    #org @start givepokemon 0x1 0x1 0x1 0x0 0x0 0x0 call 0x1A74EB copybyte 0x020370B8 0x0202428c copybyte 0x020370B9 0x0202428d copybyte 0x020370BA 0x0202428e copybyte 0x020370BB 0x0202428f copybyte 0x020370BC 0x02024290 copybyte 0x020370BD 0x02024291 copybyte 0x020370BE 0x02024292 copybyte 0x020370BF 0x02024293 writebytetooffset 0xFF 0x020370C0 bufferstring 0x1 0x020370B8 'buffer data located at 0x8000 - 0x8003 message @1 0x6 special 0x0EF end

    #org @1 = Hello, my name is \v\h03!

    __________________

    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 GMT -8. The time now is 6:08 AM.