Jump to content

pichu2001

Member
  • Posts

    22
  • Joined

  • Last visited

Posts posted by pichu2001

  1. Thanks a lot, I'm very happy that it's simple to understand....

    Now another lessons for you, people!

    Lesson 2: Simple Message Script with variations.

    There are a lot of different messages command, that give us a very powerful way to tell something.

    Now we start analyze.

    003D

    We already use this command, but now we give a deeply look into.

    The last parameter, that we called NORMAL, can be changed to give another whole aspect to the box.

    Here there's a list of values that we can use:

    • 0000 : NORMAL.
    • 0001 : ANGRY.

    003C

    This command has a similar sintax of Message, although there is a new parameter, called NPCID, that rapresent the person from which depart the "arrow" of the message.

    We'll call DirectedMessage .

    The signature of command is:

    [b][color="red"]DirectedMessage[/color][/b] [b][color="blue"]MSGCONST[/color][/b] [b][color="blue"]ID=0[/color][/b] [u][b][color="blue"]NPCID[/color][/b][/u] [b][color="blue"]BOTTOM[/color][/b] [b][color="blue"]NORMAL[/color][/b]

    We can use this command when we want that another people speak during script.

    0034

    This command is more simple than the other two.

    It show a message into a grey box, used mostly when you received an item.

    We'll call EventGreyMessage.

    The signature of command is:

    [b][color="red"]EventGreyMessage[/color][/b] [b][color="blue"]MSGID[/color][/b]  [b][color="blue"]BOTTOM[/color][/b]

    Important: To close this message, we need to use 0036 command, instead of CloseMessage.

    We'll call this last command CloseEventMessage.

    0038

    It show a message without arrow, used mostly when we don't know who's speaking.

    We'll call BubbleMessage.

    The signature of command is:

    [b][color="red"]BubbleMessage[/color][/b] [b][color="blue"]MSGID[/color][/b]  [b][color="blue"]BOTTOM[/color][/b]

    Important: To close this message, we need to use 0039 command, instead of CloseMessage.

    We'll call this last command CloseBubbleMessage.

    003A

    With this command, we show a bubblemessage at specified coordinates.

    We'll call ShowMessageAt.

    The signature of command is:

    [b][color="red"]ShowMessageAt[/color][/b] [b][color="blue"]MSGID[/color][/b] [b][color="blue"]X[/color][/b] [b][color="blue"]Y[/color][/b]

    Note: The (0,0) position is on left upper angle of screen.

    0043

    It show a message with a coloured border, used mostly when we read city's signs or target.

    We'll call BorderedMessage.

    The signature of command is:

    [b][color="red"]BorderedMessage[/color][/b] [b][color="blue"]MSGID[/color][/b] [b][color="blue"]COLOR[/color][/b]

    The color values are:

    • 0000 : PINK.
    • 0001 : BROWN.
    • 0002 : BLUE.
    • 0003 : GREEN.

    Important: To close this message, we need to use 0044 command, instead of CloseMessage.

    We'll call this last command CloseBorderedMessage.

    0045

    It show a strange transparent message, like a destroyed paper.

    We'll call PaperMessage.

    The signature of command is:

    [b][color="red"]BubbleMessage[/color][/b] [b][color="blue"]MSGID[/color][/b]  [b][color="blue"]X[/color][/b]

    This command need't some little study research.

    Important: To close this message, we need to use 0046 command, instead of CloseMessage.

    We'll call this last command ClosePaperMessage.

    0048

    This command is equal at DirectedMessage.

    The only difference is an other last parameter, that is always 0.

    We don't use it, for now.

    0049

    This command is similar at DirectedMessage, but with an important differences: the message change if we are playing Black or White.

    So we'll call DoubleMessage

    The signature of command is:

    [b][color="red"]DoubleMessage[/color][/b] [b][color="blue"]MSGCONST[/color][/b] [u][b][color="blue"]MSGIDBLACK[/color][/b] [b][color="blue"]MSGIDWHITE[/color][/b][/u] [b][color="blue"]NPCID[/color][/b] [b][color="blue"]BOTTOM[/color][/b] [b][color="blue"]NORMAL[/color][/b]

    004A

    It show an angry Message, when we want that the people "shout",

    We'll call AngryMessage.

    The signature of command is:

    [b][color="red"]AngryMessage[/color][/b] [b][color="blue"]MSGID[/color][/b]  [b][color="blue"]BOTTOM[/color][/b]

    Important: To close this message, we need to use 004B command, instead of CloseMessage.

    We'll call this last command CloseAngryMessage.

    All of this command we can use in our simple script, remembering to close messages with right command.

    Today's lesson finish here.

    The next time we'll see messages contains variables (Like Hiro's name and other type)

    Stay tuned!

    pichu2000

  2. Thanks for support...

    Lesson 1: Simple Message Script

    Starting with something of simple: we wanna a overworld tell us a simple message, like "Hello, world!".

    So, after we have opening our file to edit, go to offset of the our script (Lesson 0 - Declarative Part) and start writing. (I'll use red color for command and blue for parameters)

    So, the first command we need to insert is:

    [b][color="red"]002E [/color][/b]

    This command rapresent the beginning of the script.

    It haven't any parameters. We'll call StartScript .

    After, maybe we wanna to "hear" the famous 'click' when we talking with a person. So our script became:

    [b][color="red"]StartScript [/color][/b]
    [b][color="red"]A600[/color][/b] [b][color="blue"]4705[/color][/b]

    This new command playing a generic sound, in this case 4705, that rapresent 'click'. If you want another sound, you can change the parameter. We will call PlaySound .

    Now we wanna talk with well-mannered person, so we wanna that he/she face us while he's talking.

    We'll use:

    [b][color="red"]StartScript [/color][/b]
    [b][color="red"]PlaySound[/color][/b] [b][color="blue"]CLICK[/color][/b]
    [b][color="red"]7400 [/color][/b]
    

    This command forced people to face the player. We'll call in fact FacePlayer .

    Now the message:

    [b][color="red"]StartScript [/color][/b]
    [b][color="red"]PlaySound[/color][/b] [b][color="blue"]CLICK[/color][/b]
    [b][color="red"]FacePlayer [/color][/b]
    [b][color="red"]3D00[/color][/b] [b][color="blue"]0004[/color][/b] [b][color="blue"]0000[/color][/b] [b][color="blue"]0000[/color][/b] [b][color="blue"]0000[/color][/b]
    

    The message is a little more complex. There are a lot of different command for showing a message, but this is the simplest. Now we analized each parameter.

    • 0004 : Costant.
      We ever need to insert it.
    • 0000 : Message Id.
      Differently from GBA games, we needn't to insert the offset of message.
      In fact each map is linked with a file of Msg.Narc ( a/0/0/3) that contains an ordered sequence of "messages". So the parameter tell us that the message is the 0x0 message in linked msg-file.
      (Later I give you all the association script-message file, I promise)
    • 0000 : Top/Bottom View.
      Indicate where the message is show on the screen. (0000 = Bottom, 0001 = Top)
    • 0000 : Type of Border.
      Indicate which type of border has the messages. (0000 = Simple)

    Now we have finally insert message, but we need other commands to close the script.

    First:

    [b][color="red"]StartScript [/color][/b]
    [b][color="red"]PlaySound[/color][/b] [b][color="blue"]CLICK[/color][/b]
    [b][color="red"]FacePlayer [/color][/b]
    [b][color="red"]Message[/color][/b] [b][color="blue"]MSGCONST[/color][/b] [b][color="blue"]ID=0[/color][/b] [b][color="blue"]BOTTOM[/color][/b] [b][color="blue"]NORMAL[/color][/b]
    [b][color="red"]3200 [/color][/b]
    

    This command forced the message to remain open until you click a botton.

    We'll call WaitButton.

    [b][color="red"]StartScript [/color][/b]
    [b][color="red"]PlaySound[/color][/b] [b][color="blue"]CLICK[/color][/b]
    [b][color="red"]FacePlayer [/color][/b]
    [b][color="red"]Message[/color][/b] [b][color="blue"]MSGCONST[/color][/b] [b][color="blue"]ID=0[/color][/b] [b][color="blue"]BOTTOM[/color][/b] [b][color="blue"]NORMAL[/color][/b]
    [b][color="red"]WaitButton [/color][/b]
    [b][color="red"]3E00[/color][/b]
    

    This command close the message. We'll call CloseMessage.

    [b][color="red"]StartScript [/color][/b]
    [b][color="red"]PlaySound[/color][/b] [b][color="blue"]CLICK[/color][/b]
    [b][color="red"]FacePlayer [/color][/b]
    [b][color="red"]Message[/color][/b] [b][color="blue"]MSGCONST[/color][/b] [b][color="blue"]ID=0[/color][/b] [b][color="blue"]BOTTOM[/color][/b] [b][color="blue"]NORMAL[/color][/b]
    [b][color="red"]WaitButton [/color][/b]
    [b][color="red"]CloseMessage[/color][/b]
    [b][color="red"]3000[/color][/b]
    

    I don't know really what this command do. But you need to insert after a CloseMessage.

    [b][color="red"]StartScript [/color][/b]
    [b][color="red"]PlaySound[/color][/b] [b][color="blue"]CLICK[/color][/b]
    [b][color="red"]FacePlayer [/color][/b]
    [b][color="red"]Message[/color][/b] [b][color="blue"]MSGCONST[/color][/b] [b][color="blue"]ID=0[/color][/b] [b][color="blue"]BOTTOM[/color][/b] [b][color="blue"]NORMAL[/color][/b]
    [b][color="red"]WaitButton [/color][/b]
    [b][color="red"]CloseMessage[/color][/b]
    [b][color="red"]3000[/color][/b]
    [b][color="red"]2F00[/color][/b]
    

    This command closing the script. We'll call EndScript.

    Latest command is the 0200 command, that is the End of all routine.

    So we have this sequence's of command to insert into our HexViewer:

    [b][color="red"]2E00[/color][/b] [b][color="red"]A600[/color][/b] [b][color="blue"]4705[/color][/b] [b][color="red"]7400[/color][/b] [b][color="red"]3D00[/color][/b] [b][color="blue"]0004[/color][/b] [b][color="blue"]0000[/color][/b] [b][color="blue"]0000[/color][/b] [b][color="blue"]0000[/color][/b] [b][color="red"]3200[/color][/b] [b][color="red"]3E00[/color][/b] [b][color="red"]3000[/color][/b] [b][color="red"]2F00[/color][/b] [b][color="red"]0200[/color][/b]
    

    The "human-friendly" version of the script is:

    [b][color="red"]StartScript [/color][/b]
    [b][color="red"]PlaySound[/color][/b] [b][color="blue"]CLICK[/color][/b]
    [b][color="red"]FacePlayer [/color][/b]
    [b][color="red"]Message[/color][/b] [b][color="blue"]MSGCONST[/color][/b] [b][color="blue"]ID=0[/color][/b] [b][color="blue"]BOTTOM[/color][/b] [b][color="blue"]NORMAL[/color][/b]
    [b][color="red"]WaitButton [/color][/b]
    [b][color="red"]CloseMessage[/color][/b]
    [b][color="red"]3000[/color][/b]
    [b][color="red"]EndScript[/color][/b]
    [b][color="red"]End[/color][/b]
    

    This is all for now. I hope I was clear.

    Stay tuned for next lessons...

    pichu2000

  3. Foreground

    Hi, people!

    I see you're latest trying to figure how scripts works on BW, and I wanna give my contribution.

    Really, I've started about two years ago editing BW scripts, for a future addition on PPRE, but nothing happened later and my work remained hidden for a lot.

    I wanna share with you my knowledge about scripts, so let's go!

    (This tutorial presume that you know something about hex and programmation)

    Script Structure

    In a BW file, like DPP and HGSS, the scripts can divided in two main sections: declarative and command section.

    Declarative Sections

    Declarative part contains all "offset" of the scripts (start offset in particular). The

    Each offset is saved in a UInt32 (4 byte), and we must add the "actual" reader position for reach the real script start. This section end ever with 0x13FD.

    Example:

      0A 00 00 00 08 00 00 00 FD 00 00 00 13 FD 

    This is a declarative part for a/0/5/7-0, containing 3 scripts.

    1st offset script: 0x0A + 0x04 = 0x0E

    2nd offset script: 0x08 + 0x08 = 0x10

    3rd offset script: 0xFD + 0x0A = 0x107

    Command Sections

    Command section contains the real commands that will be executed by scripts.

    There are 800+ different command, but the main structure is

    0x0 -0x4 ID Command
    [Various parameter]
    

    Next lesson, we can see some simple script in action.

    Stay tuned.

  4. Some news!

    A month ago, I decided to inglobate my tool on PG4Map source code, so during this period I was rewriting my tool in C#(Very long work, but necessary)

    I wanna give you news about status of new tool.

    -Showing NSBMD(100%) (thanks to Sentry)

    -Showing only certain polygon(70%).

    -Swapping from texture mode to wireframe(70%)

    -Loading Verticles and info(100%)

    -Loading Movements(100%)

    -Loading Object(100%)

    Here'ìs an image of the actual new interface.

    http://www.imagehost.it/di-MSL6.png

    The conversion is still at early stage(I don't know if i convert narc part, is very long...) but i hope to reach beta 003 before 1st january 2012.

    Stay tuned!

  5. I decided to release beta002 for my tool. There's the feature

    - Same of beta001 (With fixed part, thanks to 805587804)

    - Display bw movement and models(not edit yet)

    - Display a lot of useful info of nsbmd file (not edit yet)

    For the 1.0 version I wanna insert a nsbmd viewer, like suggest team fail, but it's very difficult to implement a opengl viewer(if someone wanna help me, i appreciate.)

  6. SIZE="4"]

    Nintendo Pokemon Rom Editor[/size]

    by pichu2001

    Foreword

    Hi!

    Almost three month ago i started working on a potential NDS Pokemon Editor.

    At first, i worked with Visual Basic, and i released two betas (link at bottom).

    A month ago i decided to convert my tool in Visual C#, and finally i "insert" my new code in the SentryAlphaOmega's Map Viewer. So, let's me release the beta 1.0, as a Christmas Present!

    Feature

    - Open, edit and save DPP, HGSS, BW Map.

    - - - Open, save, edit Movement (Tested only for DPP, HGSS - BW may be work.)

    - - - Open, save, edit Object( Add and delete function should work also if in the original map there aren't object)

    - - - Open, save, edit Nsbmd Part(Only you can obscurate a Polygon(The edit part is very buggy))

    - - - Event Viewer(Not linked with map, you must extract zone_event(release if DP) internal file)

    - - - Save a map as NSBMD.

    - - - Show some other useful stuff(Regarding Nsbmd part)

    How to Use

    1. First go to the little directory on menu, and open a map from BW, HGSS, or DPP.
    2. If the map is a real map, you can see a Dialog Box, in which you must choose from which game the Map is extracted.
    3. Now you should can see the first Polygon of the map(Swap with Rotate, Zoom and Elevation for having a better camera). You can choose the PolygonVisible from the apposite command; if you wanna remove polygon click on Remove, after go to Save from main menu.
    4. There's other three tab: Objects, Movement and Other.

      1. Object: You simply edit the values into the table, and click Save. If you wanna delete an Object, select the row, click on Delete, click on Save, and later Save the Map from main menu. You can add object with the same method.
      2. Movement: Like object, you can edit the cells, than click on Save button.
        Also you can select a group of cells, right click with mouse, choose the new movement, and click on it (Not fully insert).
      3. [*] Event Viewer is a different part of the program. You can view an event file going to Other Section, click on Event, and go to Open Event.

        Choose the event file and see the info into the three table(Edit coming soon).

        Preview

        http://www.imagehost.it/di-KXK0.png

        http://www.imagehost.it/di-G138.png

        Download

        NPRE beta 001 26-9-2011

        http://www.megaupload.com/?d=WFPXTCUT

        NPRE beta 002 11-11-2011

        http://www.2shared.com/file/wDkias7F/NPRE_b002.html

        NPRE beta 1.0 21-12-2011

        http://www.2shared.com/file/is1nC07g/NPPRE_beta_10.html

        For any bug or suggestion, don't hesitate!

        Pichu.

  7. Chiarito tutto. Non ho mai approvato le parole di Araxes e Light, e comunque erano pensieri personali, non venivano certo dal team Cinnabar

    Per il resto, è vero che non l'avevamo testata, poichè pensavamo che facendola provare agli utenti stessi avremmo potuto ottimizzare i tempi.

    Ci dispiace di aver creato disagi, e comunque stiamo cercando di rimediare.(Siamo pochini, perciò qualche errore dovete permettercelo!)

    Auguri per la traduzione e mettiamo una pietra sopra l'accaduto. Ciao!

  8. Ti devo ricordare che io sono subentrato nella beta di hg solo dopo la seconda.

    Il problema è che secondo me se siamo in 60 a tradurre, c'è il rischio che uno traduce, gli altri si grattano, e poi si prendono tutto il merito.

    Poi si crea una tale confusione(vedo che c'è gente che traduce un file già tradotto 3 volte da altri) e si spreca molto tempo.

    Infine così il team cinnabar svanirebbe, e tutto il merito andrebbe a project, che ha molta ma molta più fama.

    Se queste tre cose fossero risolvibili si potrebbe parlare di unione, ma per adesso vorrei almeno che non ci screditaste ogni 2-3, ecco.

    Se la vostra beta sarà migliore, mi inchinerò alla vostra maestria, ma certe persone non dovrebbero vantarsi di prenderci in giro...(Si veda qualche post sopra di un certo vc64)

    Dopo questo buona traduzione a tutti, e scusate l'intrusione.

  9. hey SCV,

    my life has been getting pretty busy, and i havent even had time yet to play HG/SS just once, so it's unlikely i'll will be doing much more rom editing (or research) anymore. Anyway, i'm curious, will it be easy to add HGSS support to PPRE? The equivalent to the scr_seq_release.narc file is in root\a\0\1\2 AFAIK, but you probably already know this (better).

    Well, we was working on a new script class, with new commands linked with Hgss.

    We can load 80% of scripts. We have problem regarding map section of PPRE, because the formula is changed and we don't know how script, events...etc are linked yet

×
×
  • Create New...