ShootersForever.com Forum Index

GoldenEye 007 Nintendo 64 Community, GoldenEye X, Nintendo 64 Games Discussion
GoldenEye Cheats, GoldenEye X Codes, Tips, Help, Nintendo 64 Gaming Community


your very own stringtable!

 
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department
View previous topic :: View next topic  
PaD
Agent
Agent


Joined: 20 Dec 2005
Posts: 72
Location: Datteln, Germany

 PostPosted: Sun Apr 16, 2006 7:16 am    Post subject: your very own stringtable! Reply with quote Back to top

I just figured how stringtables actually work and wow, you can add your own strings and make them work perfectly!

I will do this using an example.
I want to make the weapon set "Slappers Only!" be called "Hello", but without modifying any original string.

1. "Register" your new stringtable
at 8008C640, there's a list of pointers to currently loaded stringtables.
stuff like weapon pickup texts or cheat option texts are always loaded.
at the end of the list, there's space to add maybe 3 pointers.

I'll add mine at 8008C6F4, 0xB4 bytes from the start of the list:
8108C6F4 802B
8108C6F6 DE00

the pointer points to 802BDE00, there's enough 00s there to create a stringtable there

2. Stringtable "header"
I want my stringtable to have 2 strings, "Hello" and "Goodbye".
I want the string data for "Hello" to be at 802BDE10, which is 0x10 bytes from the stringtable start.
so I do this:
812BDE02 0010
812BDE06 0016

"hey, what's the second line?"
the second line points to my second string, "Goodbye".
I'll need 6 bytes for "Hello" (5 letters + 00 termination), so "Goodbye" can begin at 802BDE16 (0x16 bytes from stringtable start)

3. String data
OK, this step is obvious.
I put the string data where I determined it to be:

(Hello)
812BDE10 4865
812BDE12 6C6C
812BDE14 6F00
(Goodbye)
812BDE16 476F
812BDE18 6F64
812BDE1A 6279
812BDE1C 6500

4. pointing
OK, stringtable ready for action!
the name pointer for the "Slappers Only!" text is at 800490F0.
so I change it to "Hello":
810490F0 B400

B4, because the pointer to my stringtable is 0xB4 bytes from the start of the stringtable list.
00, because "Hello" is string #1.
For "Goodbye", I could use B401

---
I bet somebody found this already, but now it's documented right here Wink
besides, I'm kinda proud to having figured this Very Happy
 
View user's profile Send private message MSN Messenger ICQ Number
Wreck
Administrator
Administrator


Joined: 14 Dec 2005
Posts: 7198
Location: Ontario, Canada

 PostPosted: Sun Apr 16, 2006 3:39 pm    Post subject: Reply with quote Back to top

PaD, I'm proud of you, too! Very Happy
Great work. I've been investigating the text strings for the past two weeks, since the Caves Mission needs a briefing file. I was forcing it to read from the actual setup file, but later decided to upload it to another part of memory. Using the Caves slot, it's quite simple. After reading into all of the cool stuff you've been doing with the text mods for your wonderful Editors, I checked to see if it was possible to add a brand new set. Seems as though we both used the same "B4" address. I set mine to "8008000" at first, which worked, but ended up getting overwritten at one point. It's very cool being able to do this, and I'm mighty happy to see that you did it. The only pain is that you need to set up pointers to all of those used in the table. Your codes would need to change with nearly every amount of strings. Confused

P.S.: Atleast your text was nice, mine was a bunch of profanities. Razz
 
View user's profile Send private message Visit poster's website
PaD
Agent
Agent


Joined: 20 Dec 2005
Posts: 72
Location: Datteln, Germany

 PostPosted: Mon Apr 17, 2006 1:02 am    Post subject: Reply with quote Back to top

Of course, if you want to have more strings in your table, the "header" must be longer. The pointers are required so the game knows where's what...
But, you can do it this way, change this:
812BDE02 0010
812BDE06 0016

to this:
812BDE02 0400
812BDE06 0406

now "Hello" would begin at 0x802BDE00+0x400, which leaves room for 256 pointers before the string data and therefore enables you to have 256 strings, which is not easy to ever reach...
and of course, you can increase that to incredible amounts.
just be sure you got enough 00s that don't get overwritten Razz

what you should also do is mind your string lengths.
I actually knew that I'd type "Hello" and that it'll require exactly 6 bytes.
Though I'd have a problem wanting to change that now.
So if you don't know how long your string will be, just make it insanely long and let "Goodbye" begin 64 bytes later or so (812BDE06 0440).

Thanks btw.
Knowing myself, I'd love to implement this possibility into an editor. I'll see...
 
View user's profile Send private message MSN Messenger ICQ Number
zoinkity
007
007


Joined: 24 Nov 2005
Posts: 1687

 PostPosted: Wed Jun 04, 2008 7:09 am    Post subject: Reply with quote Back to top

Sorry to resurrect a very dead topic, but does anyone know how many stringtables can be added to the list before it fries something?

The last possible entry is FC due to the 2-byte limit, but they might not have left that much space... Certainly somebody has already tried this?
_________________
(\_/) Beware
(O.o) ze
(> <) Hoppentruppen!
 
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department All times are GMT - 8 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Cobalt 2.0 BB theme/template by Jakob Persson.
Copyright © 2002-2004 Jakob Persson


Powered by BB © 01, 02 BB Group

 


Please Visit My Other Sites: GoldenEyeForever.com | GrandTheftAutoForever.com

Got kids? Check out my Dora The Explorer site with games and coloring pages!

Our forums feature Nintendo 64 games, GoldenEye 007 N64 New Maps and Missions, GoldenEye Cheats, N64 Emulator, Gameshark, GoldenEye Multiplayer and more!

[ Privacy Policy ]