The PokéCommunity Forums Fan Games ROM Hacking Research & Development
Research [IDB available] Crash Bandicoot 2: N-Tranced Research Thread

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 June 4th, 2012 (5:34 AM). Edited June 4th, 2012 by esperance.
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
Just to correct and add to the knowledge of text, the English text goes from 0x001D153C to 0x001D3984.

At 0x001D3C94 begins all of the French text, going through 0x001D5C1F.

At 0x001D5F30 begins all of the German text, going through 0x001D7F4F.

At 0x001D8260 begins all of the Spanish text, going through 0x001DA157.

At 0x001DA468 begins all of the Italian text, going through 0x001DC443.

Finally, at 0x001DC754 begins all of the Dutch text, going through 0x001DE72F.

Also, I've figured out how the game accesses the text!
Following each text section, is a table of 195 pointers to different sections of the text. (It is 0x310 bytes long)

Here are the offsets of each table (for clarification):
English: 0x001D3984
French: 0x001D5C20
German: 0x001D7F50
Spanish: 0x001DA158
Italian: 0x001DC444
Dutch: 0x001DE730

Here's the layout of the table, as far as I have bothered to figure out.
Spoiler:

No. - Meaning - Use
0 - Pointer to "press start" - Titlescreen
1 - Pointer to "new game" - Main menu
2 - Pointer to "load game" - Main menu
3 - Pointer to "link game" - Main menu
4 - Pointer to "credits" - Main menu
5 - Pointer to "atlasphere" - Link Game sub-menu
6 - Pointer to "link race" - Link Game sub-menu
7 - Pointer to "back" - Link Game sub-menu
...
195 - Pointer to "use <#> to brake..." - Controls for..? - Last entry


Obviously it needs some people to go through and finish it out.

Also, I have noticed what look like two message codes, "<#>" and "<$>"
However, it should be noted that they are separate characters!
"<" and ">" print < and >, while "#" prints "A" and "$" prints "A", this is because "#" and "$" are 'invalid.' They have not font representation.

Also, to end a message, there are 2 bytes ,00 00, just like Team Fail said.
However, sometimes there are 4 bytes (00 00 00 00).

On the subject of newlines, it is quite simple... just put two the hex value 0x0A (newline in ASCII)
I'm not really sure on this, though.

Now, onto text color.
To set the text color, you just set one byte.
Value - Color - Usage
0x00 - None - None
0x01 - Orange - Used for normal stuff
0x02 - White/None - Not used?
0x03 - Green - Used for names
All else - puts "A" instead of color.
__________________
What are you so afraid of?
Reply With Quote

Relevant Advertising!

  #2    
Old June 4th, 2012 (8:23 AM).
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
All the languages are in one game. And I figured that was why A was showing up.
__________________
What are you so afraid of?
Reply With Quote
  #3    
Old June 4th, 2012 (8:59 AM).
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
The languages are most definitely not encrypted they're in ASCII just like English.
We just need to find the fonts for the characters.

Also, when I put 00 as the first character, the message box didn't show up. Does this mean just 00 is the terminator?
__________________
What are you so afraid of?
Reply With Quote
  #4    
Old June 4th, 2012 (9:02 AM).
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
Quote:
Originally Posted by Team Fail View Post
Weird. I go to the offsets and I see nothing like French or anything. Perhaps it's because I'm using my own dump and you might be using a European version.
That may be the case. I downloaded mine, and all the languages are there. You have to choose one at startup.
__________________
What are you so afraid of?
Reply With Quote
  #5    
Old June 4th, 2012 (9:17 AM). Edited December 8th, 2014 by esperance.
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
Quote:
Originally Posted by Team Fail View Post
Yeah. Mine just goes into the game. There's a regional difference right there. I'll add that to the OP.
Okay.

On another note, I took a look at the RAM, and I've identified the use of some offsets

Offset - Purpose
02000010 to 02000014 - Timer? (Goes up by one each frame)
02000018 to 0200001C - Key state
Spoiler:

Values
> 0000FC00 - Nothing
> 0000FC01 - A button
> 0000FC02 - B button
> 0000FC04 - Select
> 0000FC08 - Start
> 0000FC20 - Left
> 0000FC10 - Right
> 0000FC40 - Up
> 0000FC80 - Down
> 0000FD00 - R button
> 0000FE00 - L button

020001CC to 020001D0 - Another timer?
02000E54 to 02000E5B - Player's sprite frame
02000E5C to 02000E60 - Altitude of player. Signed integer.
Spoiler:

For example, if the player is jumping, and his altitude is 23A, it would look like this: 0000023A.
However, if the A button is being pressed, if would look like this: FFFFF23A.

This because when it is filled with F's instead of 0's, it is negative (it's a signed integer).
__________________
What are you so afraid of?
Reply With Quote
  #6    
Old June 5th, 2012 (5:15 AM). Edited June 5th, 2012 by esperance.
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
I actually just got the USA ROM, and I now have something else to add for text.
In the USA version, the text begins at 0x001D3820 and goes through 0x001D5C03, with the table starting at 0x001D5C04.

Also, it turns out the text is different from the EUR version completely!

In the EUR version, the last text is "use <#> to brake...", but in the USA version, the last text is "...but i have created turbo gates to help you stay ahead of the danger."

Also, the table for the USA version is shorter, being only 2FC bytes long, with 191 entries!

EDIT: A correction to the RAM addresses 02000E5C to 02000E60. It is the altitude of the player, but the extra is F if the player is going up, and 0 if he is going down.

EDIT 2: The tilesets are 256 colors, for the record.
__________________
What are you so afraid of?
Reply With Quote
  #7    
Old November 10th, 2012 (1:36 PM).
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
Very nice. That confirms the use of a different sound engine for the game.
__________________
What are you so afraid of?
Reply With Quote
  #8    
Old November 13th, 2012 (1:28 PM).
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
Very nice. Great job figuring out the "switcher"
__________________
What are you so afraid of?
Reply With Quote
  #9    
Old November 13th, 2012 (3:39 PM).
esperance's Avatar
esperance esperance is offline
 
Join Date: Mar 2010
Location: Ohio
Age: 21
Gender: Male
Nature: Relaxed
Posts: 3,820
Very interesting. Makes sense, but definitely adds a layer of complexity to the code.
Reply With Quote
  #10    
Old July 9th, 2013 (9:39 PM).
einstein95 einstein95 is offline
     
    Join Date: Jul 2013
    Gender: Male
    Posts: 2
    Hey, it's the same Einstein95 from TCRF here. I found these weird offsets after playing around for a bit:

    0x03007DA3 (scrolls map (Y)):
    00 - Return to Crash
    <7F - Right
    >7F - Left

    0x03007DA7 (scrolls map (X)):
    00 - Return to Crash
    <7F - Down
    >7F - Up

    For example, if you were to set 0x03007DA7 to 80, then the camera moves up. It seems like it was planned to have a way of looking around the map, like in other games (Super Mario World springs to mind). This is probably true given that 00 returns back to Crash in a smooth camera movement.


    ETA: Oh, and I found the time trial counter (not the gems)
    Time Trial counter:
    02002708 - Minutes
    0200270C - Seconds
    02002710 - Deciseconds (1/10th of a second)
    02002714 - Centiseconds (1/100th of a second)

    What's interesting is that it counts the centiseconds which aren't displayed in the timer.
    Reply With Quote
      #11    
    Old October 20th, 2013 (11:02 AM).
    esperance's Avatar
    esperance esperance is offline
     
    Join Date: Mar 2010
    Location: Ohio
    Age: 21
    Gender: Male
    Nature: Relaxed
    Posts: 3,820
    I was taking a look at the thread again, and I decided I'd do a little bit of research.

    So, I come with information!

    Here's what little I found about palettes in the ROM. I'll add more to the list as I go.
    Spoiler:
    00475D34 - Crash
    004761D4 - Textbox/AkuAku
    004761F4 - Font 1


    Yay!
    __________________
    What are you so afraid of?
    Reply With Quote
      #12    
    Old December 20th, 2014 (6:21 PM).
    esperance's Avatar
    esperance esperance is offline
     
    Join Date: Mar 2010
    Location: Ohio
    Age: 21
    Gender: Male
    Nature: Relaxed
    Posts: 3,820
    So I was looking around in the ASM, and I saw an interesting function at 08001C1C.
    It has to do with playing songs, and I think it may have to deal with how stages play songs.
    __________________
    What are you so afraid of?
    Reply With Quote
      #13    
    Old September 14th, 2015 (12:36 PM).
    salvadorc17 salvadorc17 is offline
       
      Join Date: Jun 2015
      Gender: Male
      Posts: 6
      Good work for that latest info, there are news regards this?? Youre still doing research???
      Reply With Quote
        #14    
      Old August 13th, 2016 (1:17 PM).
      BlackYoshi485's Avatar
      BlackYoshi485 BlackYoshi485 is offline
         
        Join Date: Nov 2015
        Location: Buenos Aires, Argentina
        Gender: Male
        Nature: Adamant
        Posts: 33
        I know this thead is kinda old, but i think you should share your research with the Crash Mania forum.

        http://hpzr.proboards.com/
        __________________
        Ho oh Ho oh it's Lugia, Unown, you'll never believe it's Zapdos.
        Reply With Quote
        Reply

        Quick Reply

        Join the conversation!

        Create an account to post a reply in this thread, participate in other discussions, and more!

        Create a PokéCommunity Account

        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:19 PM.