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


object type data
Goto page Previous  1, 2
 
Post new topic   Reply to topic    ShootersForever.com Forum Index -> Q-Lab Hacking Department
View previous topic :: View next topic  
Wreck
Administrator
Administrator


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

 PostPosted: Tue Apr 18, 2006 2:17 pm    Post subject: Reply with quote Back to top

Zoinkity no doubt has the list somewhere.
Doors include the main beef as the other types, but go deeper into detail. Sound made, single or double, motion speed, amount of time until they close automatically, how they operate (slide, swing, raise), locked or unlocked, etc. They're twice the length of a standard object, allowing you to convert them into two objects, or vice versa. Doors must also be assigned to Advanced presets in order to load into the map. But you can't put them at the regular value. Instead, take a hex calculator and subtract "2710" from the preset ID. It may appear to be a Basic Preset, but doors read it as Advanced. Don't know why they do this, just know that they do.

By the way, I love to take really big hex dumps! Laughing
 
View user's profile Send private message Visit poster's website
PaD
Agent
Agent


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

 PostPosted: Wed Apr 19, 2006 2:32 pm    Post subject: Reply with quote Back to top

Very Happy
I noticed doors had a lot of data (0x100 bytes)... hope zoinkity comes back here some time to provide it Razz

oh I got new questions:

type 0023 = unknown or forgot to list?
example is in Control singleplayer, at 1D38D0 (beginning of the object data btw):
00000023 000000## 0000XXXX PPPPPPPP
## = seems to be counted... first 23 type has 00, second has 01, and so on

XXXX = preset? first has 2024, second 2025, and so on

PPPPPPPP pointer to previous 23 type, first one has just 00000000, second has a pointer to the first, third has a pointer to the second

In Facility singleplayer, they also appear at the beginning of the object data.
in both levels, there are 5 of them.
any idea what they could be?

---------

how do objectives work?
as far as I believe

1. BEGIN objective - object type 0017
2. events to make objective completed?
like in facility, objective #4 (destroy the tanks I believe), there's 10 times a "destory object" object (0019)
3. END objective - object type 0018

oh, and what about 001A and 001B:
what the heck is block data type 9A?


Last edited by PaD on Thu Apr 20, 2006 1:31 am; edited 2 times in total
 
View user's profile Send private message MSN Messenger ICQ Number
Wreck
Administrator
Administrator


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

 PostPosted: Wed Apr 19, 2006 5:02 pm    Post subject: Reply with quote Back to top

Object type "23" sets up the briefing data in your watch menu. It determines their order and links to the corresponding briefing file. You'll be used to those, since they work like the text strings you've been modifying lately. They're the first item in any mission setup, followed by the objectives.

Return data confuses the hell out of me. It's located in the setup file for any mission, controlling spawning guards and other objective based data. That's what tells the game whether certain objectives, like killing an enemy or protecting a friend, are achieved. Simple changes can reverse the effects. An example would be failing in the Archives when you find Natalya. I've used this data to stop guards from respawing on the Cradle for Valentin's movie project. It's very cool, but very strange. I'd love a better breakdown of it some day. The pointer to it is stored at 80075D14, which will direct you to other pointers in the setup file. Each one links to a different block of information.
 
View user's profile Send private message Visit poster's website
PaD
Agent
Agent


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

 PostPosted: Thu Apr 20, 2006 1:27 am    Post subject: Reply with quote Back to top

hm... I can't find any system.
just for the strings, like "If only I had a gun!!!" in Facility.
it's always AD [text string, zero-ended]

I tried to split it up into formats, like object type data.
20XX, 02XX, 90XX, etc..
though sometimes 20XX are 0xBC long, next time differently.
so that can't be it.

the only thing that really makes sense is that this is some sort of assembly code.
every "spawn information" ends with 04 00, which could be a return command (end of subroutine).
AD [text] would then probably mean something like "print this text to [somewhere]", have you ever seen the text "If only I had a gun" in the game?

if that's true, the question is, what type of assembly is it?
I'll try to find out more.

EDIT:
OK, I just remembered that zoinkity posted something like "assembly" codes in one of his posts here, and yes, that's it!
04 is the end of the routine.
AD is debug text.
makes sense.
Assuming you knew that, what better breakdown would you need? Confused

there's lots of other code in there instead of just objective handling and respawning. for instance in archives, the dialogues are handled by this.
So this is all specific level code.
question is still, how to find out when is what called?
 
View user's profile Send private message MSN Messenger ICQ Number
zoinkity
007
007


Joined: 24 Nov 2005
Posts: 1688

 PostPosted: Mon Apr 24, 2006 7:16 am    Post subject: Reply with quote Back to top

The actions themselves are called by their numerical value, attached either to an object (ie path values, always 04xx) or in the guard action set (usually either 10xx or 00xx, 00xx being the default guard controls stored at some low address I can't remember but probably listed on one of these pages)
I think actual group execution starts with 1000. Can't remember. If you rumage through the old gscentral.com archive and find the bit on "guard spawned in temple" that was an actual example of adding a code loop to multi.

anyway, the one type that are just strings are notes. Nothing else. Still, awfully helpful if you can't figure out what the control is supposed to do.

There are two types of return types. One sets the objective state flags (really just a long value that is dedicated to just the stuff going on in-game) and the other (03xx, was it?) is used for execution loops. Just like in traditional C-programming.

Here's an example (well, should be at least) of a parsed group.
Code:

bunker 1
objectives:
00000800   datathief failed
00000400   datathief successful
00000200   datathief incomplete
00000100   mainframe hackable


unknown 0401   (9144)
2000    enable path?
05FD0007    guard: use action 0007
04xx   terminator + null

unknown 0402   (914C)
2001    enable path?
05FD0007   guard: use action 0007
04xx   terminator + null

blue beret guard on alarm   0403   (9154)   3AF44FA4
F300   if already loaded, return 00
BE00FFFD04040000000200   spawn guard on alarm: camoguard, random head, spawn preset
//.bb.hh.cc. FD?, jal 0404, flags: sunglasses, return 00
0200   after guard loaded...
05FD0002   guard: jal 0002
04   terminator

weapon assignment block   0404   (9168)
BF00B8080000000000   weapon: kf7 soviet
0200   check...
C000DD0000000000   hat: blue beret
0200   check...
05FD0002   guard: jal 0002
04xxxx   terminator + null

spawn assignment handle   0405   (9184)
8E1A    assignment number or something like that
AD68310A00    debug text:   h1
05FD0409   guard: use 0409   (equipment assignment block)
04    terminator

spawn assignment handle   0406   (9190)
8E1B    assignment value or something like that
AD68320A00    debug text:   h2
05FD0409   guard: use 0409   (equipment assignment block)
04   terminator + null

spawn assignment handle   0407   (919C)
8E1C    assignment value or something like that
AD68330A00     debug text:   h3
05FD0409   guard: use 0409   (equipment assignment block)
04   terminator + null

equipment assignment block   0409   (91A8)3AF44FF8
33    seed random value
35C806    if rand < C8, return 06
72007806    ?, return 06
356408    if rand < 64, return 08
90003C    set BA
C000DE0000000000    hat:   red beret
0200    if okay...
BF00CD068000000000    weapon:   dusty (left)
0200    if okay...
33    seed random value
356400    if rand < 64, return 00
BF00CD069000000000    weapon:   dusty (right)
0200     if okay...
0001    continue to 0201
//
0208    2/3rds of the time...
900050   set BA
C000DD0000000000   hat:   blue beret
0200     if okay...
BF00C1078000000000    weapon:   klobb (left)
0200     if okay...
33    seed random value
356400    if rand < 64, return 00
BF00C1079000000000    weapon:   klobb (right)
0200     if okay...
0001    continue to 0201
//
0206    else...
900014   set BA
C000DC0000000000    hat:   black beret
0200    if okay...
BF00B8080000000000    weapon:   kf7 soviet
0200    if okay...
//
0201    after loading weapons...
05FD040B    guard: use 040B
04    terminator

spawned guard behavior   040B   (9228)3AF45078
022D
2808    jog to bond
//
0208
03
4C01F427    if not within 01F4 units of bond, return 27
3C2F    if within fire range return 2F
0227    when too far away...
2F2E    if stopped, return 2E
0108    start at 0208
//
022F    if within firing range...
3C06    if within firing range, return 06
0001    continue to 0201
//
022E    if stopped...
03   iterate
012D    start at 022D
//
0206    when within firing range...
0230
33    seed random value
350A06    if rand < A, return 06
1A01    stand still, return 01
0206    else...
353206    if rand <32, return 06
0E01    step sideways, return 01
0206    else...
353C06    if rand < 3C, return 06
1301    roll along ground, return 01
0206    else...
355006    if rand < 50, return 06
1301    roll along ground, return 01
0206    else...
356406    if rand < 64, return 06
1101    walk while firing, return 01
0206    else...
359606    if rand < 96, return 06
1201   run while firing, return 01
0206    else...
35C806    if rand < C8, return 06
140001000001   fire at bond
0206   else...
150001000001   kneel and fire at bond
//
0201   after the action...
03   iterate
2F06   if not moving, return 06
0101   start at 0201
//
0206   when not moving...
3C06   if within firing range return 06
0008   continue to 0208
0208   which is RIGHT HERE...
03   iterate
012D    start at 022D
//
0206    else, if within firing range...
03    iterate
0130    start at 0230
04xxxx    terminator + null


Boris action   0408   (92A0) 3AF450F0
0200    until guard spooked...
03
4621    if you shoot, return 21
3B21    if you kill someone in front of guard, return 21
3221    if Bond within sight, return 21
3921    if sawa gunfire return 21
960121    if byte=01, return 21
0100    start at 0200
//
0221    when startled...
AE
0208
03
21    surrender!
4B000F06    if within F units of bond, return 06
B40002581B    wait, then return 1B
001F    continue to 021F
//
0206    if close to bond...
B40000B406    wait, then return 06
001F    continue to 021F
//
0206    after waiting...
4522
001F    continue to 021F
//
021B    after waiting...
451F
4C00501C    return 1C if not within 50 units of bond
3C1F    if Bond within firing range return 1F
001C    continue to 021C
//
021F    if bond that close...
0108    start at 0208
//
021C    run away!
9504    unset byte 04
9510    unset byte 10
960106    if byte = 01, return 06
6F201D
6E081D
6E041D
6E021D
6E011D
0108    start at 0208
//
0206    if byte set...
AB0061    advance to preset 0061?
0006    continue to 0206
//
021D    if one of many things...
03
33    seed random byte
353206    if rand < 32, return 06
1E2328    walk along path...
001E    continue to 021E
//
0206    rand...
1D    stop?  nah...   
021E    else...
03
4DFD0064006302    if w/i 100 units of preset 63, return 02
4DFD000F232801    if w/i 15 units of path, return 01
2F01    if stopped return 01
011E    start at 021E
//
0201    when stopped...
960125    if byte = 01, return 25
33    seed random byte
4B001406    if w/i 20 units of bond, return 06
4506    
011C    start at 021C
//
0206
0100    start at 0200
//
0222    
960406    if byte = 04, return 06
C3780A    display text 780A:   Bond: Take me to the mainframe terminal
9404    set byte to 04
0007    continue to 0207
//
0206    if byte set...
B30001E007    ?, return 07
C3780B    display text 780B:   Programmer: Don't shoot! It's this
0207    or skip above text...
AE
961006    if byte = 10, return 06
9410    set byte to 10
1E0018    walk to preset 0018
0206    if byte set...
//
0223    loop to wait...
03    iterate
2F01    if not moving, return 01
B400012C1B    wait, then return 1B
0123    start at 0223
//
0201    if not moving...
4DFD000F001806   if current (boris) w/i 15 units of preset 18, return 06
001B   continue to 021B
//
021B    if not there yet...
451F    
4C00321C    if not within 50 units of bond, return 1C
3C1F    if bond within firing range, return 1F
//
021F    bond still close...
0122    start at 0222   (walk to mainframe)
//
021C    not close enough...
011C    start at 021C (run away!)
//
0206    at the mainframes...
AE
5B0624    if type 16 #6 not destroyed return 24 (mainframe 1)
5B0724    if type 16 #7 not destroyed return 24 (mainframe 2)
0028    continue to 0228
//
0224    if mainframes okay...
C37812    display text 7812:   Bond: Disable the Security!
0D    look around self
0228
03
30FD2A    if current guard killed, return 2A
31FD2A   if bond in room with preset FD, return 2A (or in room with current guard?)
5B0606    if type 16 #6 not destroyed return 06 (mainframe 1)
5B0706    if type 16 #7 not destroyed return 06 (mainframe 2)
0029    continue to 0229
//
0206    hacky hacky...
B400070816    wait, then return 16
B40005DC15    wait, then return 15
B40004B014    wait, then return 14
B400038413    wait, then return 13
B400025812    wait, then return 12
B400012C11    wait, then return 11
0128    start at 0228
//
0211    after 12C cycles...
B400016806    wait, then return 06
C3780E    display text 780E:   Programmer: Shouldn't take long
0206    skip text after # cycles
0128    start at 0228
//
0212    after 258 cycles...
B400029406    wait, then return 06
C3780F   display text 780F:   Programmer: Hmm the root password has been changed.
0206    skip text after # cycles
0128    start at 0228
//
0213
B40003C006    wait, then return 06
C37810   display text 7810:   Programmer: 'K' 'N' 'O' 'C' 'K' 'E' 'R' 'S'
0206    skip text after # cycles
0128    start at 0228
//
0214
B40004EC06    wait, then return 06
25    sound alarm
9A00000100    return type for objectives:   00000100
9401    set byte to 01
C37811    display text 7811:   Programmer: Oops!
0206    skip text after # cycles
0128    start at 0228
//
0215    some deleted text...
B400061806    wait, return 06
0206    skip text after # cycles
0128    start at 0228
//
0216    after 708 cycles...
03
0006    continue to 0206
0116    start at 0216
//
0206    else...
0100    start at 0200
//
0225   enough of this...
0002    continue to 0202
0100    start at 0200
//
0206    get rid of Boris...
03
22    fade away guard
0125    start at 0225
//
0229    you nuked the mainframes...
C37817    display text 7817:   Programmer: There's no way I can fix THIS!
9401    set byte to 01
0100    start at 0200
//
022A
05FD0001    current (boris): jal 0001
//
0202
05FD040C    current (boris): jal 040C
04    terminator


mainframe activation   040C   (9440)
0223
1C0065    jog to preset 0065
//
0203
03   iterate
2F06    if stopped, return 06
4DFD000F006506   if current (boris) within 15 units of preset 65, return 06
0103    start at 0203
//
0206    when stopped...
4DFD000F006501    if current (boris) w/i 15 units of preset 65, return 01
0123    start at 0223
//
0201    when at mainframes...
03
9C0000010006    if bits set, return 06 (mainframe is hackable)
700206    if difficulty secret or lower, return 06
C37813    display text 7813:   The programmer has escaped without activating the computer!
9A00000200    return value for objectives:   00000200
//
0206    when mainframe hackable...
22    fade out guard
0101    start at 0201
//
022A    
05FD0001    current (boris): jal 0001
04xxxx   terminator+nulls


enemy spawn block   1000   (9480)   3AF452D0
AD68656C6C6F00   debug text:   hello
0200   return till true...
03    iterate
3705    if alarm triggered, return 05
0100    start at 0200
//
0205    when true...
F4003C4B    change music
960101   if byte = 01, return 01
9401    set byte to 01
//
0226    main guard spawn loop...
AE
AD210A00   debug text:   !
03
311A06    if bond had entered room with preset 1A, return 06
0027    continue to 0227
//
0206    if in room...
F327    if guard loaded return 27
BD04FF006104050000000106   guard: janus special forces, random head, spawn preset 61, spawn assignment handle 0405, sunglasses, return 06 if valid
0227    if already loaded...
0206    after loading guard...
03
311B06    if bond had entered room with preset 1B, return 06
0027    continue to 0227
//
0206     if in room...
F327     if guard loaded return 27
BD04FF006104060000000106   guard: janus special forces, random head, spawn preset 61, spawn assignment handle 0406, table value 01, return 06 if valid
0227    if already loaded...
0206     after loading guard...
03
311C06    if bond had entered room with preset 1C, return 06
0027    continue to 0227
//
0206     if in room...
F327     if guard loaded return 27
BD04FF006104070000000106   guard: janus special forces, random head, spawn preset 61, spawn assignment handle 0407, table value 01, return 06 if valid
0227
//
0201    loop to wait...
03    iterate
B40004B006    wait, then return 06
0101    start at 0201
//
0206    after waiting...
0126    start at 0226
04xx   terminator+null

mainframe incomplete until hackable   1001   (94FC)
0208    loop until in room...
03
311906    if bond had entered room with preset 19, return 06
0108    start at 0208
//
0206    on arrival...
9C0000010009    if mainframe hackable, return 09
9A00000200    return value for objectives:   00000200
//
0209    kill the routine...
03    iterate
0109    start at 0209
04xx   terminator+null


datathief   1002   (9518)
0208    loop until true...
03
9C0000010009    if mainframe hackable return 09
5D0606   if used a gadget on 16#06 (mainframe 1), return 06
5D0706    if used a gadget on 16#07 (mainframe 2), return 06
0108    start at 0208
//
0206    untimely gadget use...
593706   if weapon value = datathief, return 06
0108    start at 0208
//
0206    if datathief used...
C37814    display text 7814:   The computer has not been activated
0108    start at 0208
//
0209    when hackable...
03
5D0606   if used a gadget on 16#06 (mainframe 1), return 06
5D0706    if used a gadget on 16#07 (mainframe 2), return 06
0109    start at 0209
//
0206    test if datathief...
593706    if weapon value = datathief, return 06
0109    start at 0209
//
0206    if datathief...
C37815    display text 7815:   Downloading data...
AE
C400E3FF   sound effect: E3 (duration FF=standard?): upload sound
//
0200    loop to wait...
03
5D0624   if used a gadget on 16#06 (mainframe 1), return 24
0224    goody...
5D0724   if used a gadget on 16#07 (mainframe 2), return 24
0224    goody...
B40000F006    wait, then return 06
0100    start at 0200
//
0206    completed...
C37816    display text 7816:   Finished Download.
9A00000400    return value for objectives:   00000400
0109    start at 0209
04

test if objective 4 not failed   1004   (9574)
022B
700201    if difficulty <= secret, return 01
0200
03
6D0301    if objective "4: Download data from computer" complete, return 01
5B0627    if type 16 #6 not destroyed, return 27
5B0727    if type 16 #7 not destroyed, return 27
0006    continue to 0206
//
0227    mainframe still alright...
0100    start at 0200
//
0206
C3782E    display text 782E:   Mainframe Destroyed! Data cannot be downloaded.
9A00000800    return value for objectives:   00000800
//
0201    kill the routine...
03    iterate
0101    start at 0201
04xx   terminator+null

end cutscene   1003   (959C)
022B    test until true...
03
EB2C    on key press return 2C
55006406   if step on preset 64, return 06
012B    start at 022B
//
0206    if step on preset...
EC    disable player control
D700    disable text boxes
DA    fade out for cutscene
//
0208    loop to fade...
03    iterate
DC06    when fade complete return 06
0108    start at 0208
//
0206    after fade...
F106    if objectives complete return 06
05FD000F    current: jal 000F
//
0206    objectives are complete, so now the cutscene...
DD    Remove Guards
EA
ED    hide 1st person display
03
03
03
D50900020000    use camera type 16#09, 00020000?
D9F8006806    bond: move to preset 0068, return 06
0206    when moved...
05F8040A    bond:   use 040A (intro block)
05FD0001    guard:   jal 0001
//
022C    on key press...
05FD0001    guard:   jal 0001
04    terminator

bond cutscene stuff   040A   (95E0)
DB    fade in
F400FFFF   change music: x theme?
DF08    open door 16#08 (door to surface)
0A006AFFFFFFFF0610   animation: 006A, FFFF, FFFF, 0610
AE    
//
020A    loop to wait...
03    iterate
B400003C06    wait, return 06
010A    start at 020A
//
0206    after waiting...
0A0059FFFFFFFF0610    animation: 0059, FFFF, FFFF, 0610
AE
//
0208    loop to wait...
03    iterate
B40000B406   wait, then return 06
0108    start at 0208
//
0206    after waiting...
DA    fade out
//
0209    loop to fade...
DC06    when fade complete return 06
03    iterate
0109    start at 0209
//
0206    when done...
D2    end stage
//
0201    kill the routine...
03    iterate
0101    start at 0201
04    terminator

guard in front of start   040D   (9624)   3AF45474
0200    loop until true...
03    iterate
30FD35    if current guard killed, return 35
2F2F    if guard not moving, return 2F
0100    start at 0200
//
022F    when not moving...
5B0227    if type 16 #2 not destroyed, return 27   (camera)
0031    continue to 0231
//
0227    if camera okay...
3231    if bond in sight, return 31
3E32    if you shot the guard, return 32
3F33    if heard bond, return 33
4634    if you fired at guard, return 34
3A32   if you shoot another guard, return rr
3B32    if you killed someone in front of guard, return 32
0B06    ?, return rr
33    seed random byte
350106    if rand < 01, return 06
06040D   set return to 040D
05FD0003    current: jal 0003
//
0206    if rand...
0100    start at 0200
//
0234    if shot at guard...
33    seed random byte
357F31    if rand < 7F, return 31
06040D   set return link to start of this block
05FD000A    current: jal 000A   check around yourself (pesky bullets)
//
0231    when bond in sight...
06040D   set return link to start of this block
05FD0006    current: jal 0006   typical aim, shoot bond
//
0232    
06040D   set return link to start of this block
05FD0008    current: jal 0008
//
0233     
06040D    set return link to start of this block
05FD000B    current: jal 000B
//
0235    guard is dead...
05FD0001    current: jal 0001
04xx   terminator+null


GE key uncollectable after objective   1005   (9684)   3AF454D4
0200    until completed objective...
03    iterate
6D0106    if objective "2:copy GE key and leave original" complete, return 06
0100    start at 0200
//
0206    when complete...
A30400100000   set state of 16#04 (GE key): uncollectable
//
0201   kill the routine...
03    iterate
0101    start at 0201
04xxxx   terminator+nulls
 
View user's profile Send private message Send e-mail
00zero
Agent
Agent


Joined: 10 Jan 2007
Posts: 32

 PostPosted: Mon Feb 12, 2007 12:36 pm    Post subject: Reply with quote Back to top

Quote:
zoinkity : "ie: 0588 07 corresponds to: p1416a7
These values should match the values in setup. If not, the object may not load in the correct room or at all."


so, for the life of me, i can't figure out how 0588 07 corresponds to p1416a7. i see that from your table, 07 corresponds to the a7 at the end, but how does 0588 correspond to 1416?

also, i can't find the tile and point data in my dumped file. i have everything from 8000 0000 to 801E FFFF. is it in there somewhere, and is it separated by any headers that denote what level it's for, or does each level load just have a pointer to the appropriate tiles?
 
View user's profile Send private message Send e-mail
SubDrag
Administrator
Administrator


Joined: 16 Aug 2006
Posts: 6125

 PostPosted: Mon Feb 12, 2007 1:24 pm    Post subject: Reply with quote Back to top

You don't need to know, just use the setup editor. I think Zoinkity detailed how it actually was converted somewhere here.
 
View user's profile Send private message
00zero
Agent
Agent


Joined: 10 Jan 2007
Posts: 32

 PostPosted: Mon Feb 12, 2007 1:47 pm    Post subject: Reply with quote Back to top

i know i don't need to know, but i really really want to know.

if i had that info, i could plot out the actual level, tiles, presets, etc... and have actual scale maps of the levels. the setup editor gives us the presets and locations, but doesn't show them on a map in relation to one another all at one time. Wreck had to do that separately, and it looks like he did it by hand, very tediously. i want to automate it... not because i need it, but because it's fun, i like maps. and who knows, maybe someday, i'll have somthing worthy to contribute to this forum.
 
View user's profile Send private message Send e-mail
Wreck
Administrator
Administrator


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

 PostPosted: Mon Feb 12, 2007 3:32 pm    Post subject: Reply with quote Back to top

Here are two tutorials I wrote up to better help explain how certain conversions work in GoldenEye. The latter one should take care of the problem you're currently having with the room pointers.

Preset Coordinates Expansion Conversion
http://kcghost.googlepages.com/PresetExpansionConversion.txt

Plinkdata Room Pointer Expansion Conversion
http://kcghost.googlepages.com/roompointer_conversion.txt
_________________

YOUTUBE | FACEBOOK | VAULT | MOD DB | RHDN
 
View user's profile Send private message Visit poster's website
00zero
Agent
Agent


Joined: 10 Jan 2007
Posts: 32

 PostPosted: Mon Feb 12, 2007 5:59 pm    Post subject: Reply with quote Back to top

ah yes, that clears up the first question... a little embarrassing to find out i was converting 0588 in the wrong direction, and that's why i couldn't figure out how to get 1416. i really am good at hex, really (ha ha)...

so, my second question is, where is the x, y & z coordinate data for each tile or plink? it's gotta be somewhere if it can tell which tile bond is on at any given position...
 
View user's profile Send private message Send e-mail
Wreck
Administrator
Administrator


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

 PostPosted: Tue Feb 13, 2007 12:35 pm    Post subject: Reply with quote Back to top

Again, here's a link to a thread that should contain the information you require...

Coordinates & Room Pointers Tutorial
http://shootersforever.com/forums_message_boards/viewtopic.php?t=783
_________________

YOUTUBE | FACEBOOK | VAULT | MOD DB | RHDN
 
View user's profile Send private message Visit poster's website
00zero
Agent
Agent


Joined: 10 Jan 2007
Posts: 32

 PostPosted: Tue Feb 13, 2007 7:00 pm    Post subject: Reply with quote Back to top

Wreck, thanks for the tutorials... they're all great, but i've already used them and pretty much have the hang of finding position and room data from bond's position. lots of good info, just not exactly what i was looking for.

i probably wasn't being clear enough, seeing as i'm not that experienced yet, i have a hard time formulating the right questions. my apologies... but with everyone's help, and zoinkity's topic, i've finally found what i was looking for.
i'm not sure that it's a sure thing in every instance, but it's worked every time that i've tested it so far (a couple solo missions and Facility MP 2, 3 & 4 player). here's what i found:

check location 8007B120, record the pointer (80xx xxxx). Add 0x04 to that pointer and go to that location (should only be a few lines later, if that). There you will find all the tile headers and tile point data for the level that is loaded, from the last room to the first in descending order.

i took this info from the Facility and manipulated it in excel to mark the rooms and exact preset locations. i have also created formulas for plotting three dimentional data onto a x-y scatter plot with perspective... hard to explain, so i'll attach a picture. i did find out that excel limits the number of data series to 255, which came about when i tried to load the 2599 tiles into the plot... not going to happen. and if i just add them in one long series, i get some random lines that shouldn't be there. i'll have to figure something out... i hear excel 2007 has a higher capacity for everything, maybe that will help.

anyway... so i randomly chose room 2F, which turns out to be a quarter of the Quad, a room you guys should be pretty familiar with. here's the 2-d and 3-d data plots:


thanks for the help!
 
View user's profile Send private message Send e-mail
SubDrag
Administrator
Administrator


Joined: 16 Aug 2006
Posts: 6125

 PostPosted: Tue Feb 13, 2007 8:01 pm    Post subject: Reply with quote Back to top

Impressive! Matlab shouldn't limit you to 255. It looks like my old clipping viewer, except better heh.
 
View user's profile Send private message
00zero
Agent
Agent


Joined: 10 Jan 2007
Posts: 32

 PostPosted: Wed Feb 14, 2007 9:35 am    Post subject: Reply with quote Back to top

tell me more about this clipping viewer... i'm interested!
is it available to anyone?
 
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
Goto page Previous  1, 2
Page 2 of 2

 
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 ]