Combining Pointers

Started by Sharkbyte, April 22, 2010, 03:29:10 PM

Previous topic - Next topic

Sharkbyte

How would I combine the following 2 codes to make them shorter?

CE000000 80008180
04B37EB4 00000002
E0000000 80008000
48000000 8036EAA0   different
DE000000 80008180
58010000 000000C4
DE000000 80008180
14000010 00000000
14000014 00000000
14000018 00000000
E0000000 80008000

and

CE000000 80008180
04B37EB4 00000002
E0000000 80008000
48000000 8036EC50   different
DE000000 80008180
58010000 000000C4
DE000000 80008180
14000010 00000000
14000014 00000000
14000018 00000000
E0000000 80008000

notice the offsets are the same, the only thing different is pointer address.

Deathwolf

#1
like this?

CE000000 80008180
04B37EB4 00000002
E0000000 80008000
4A000000 80000000
DE000000 80008180
58010000 000000C4
DE000000 80008180
1436EAB0 00000000
1436EAB4 00000000
1436EAB8 00000000
1436EC60 00000000
1436EC64 00000000
1436EC68 00000000
E0000000 80008000
lolz

Deathwolf

#2
for this you must use 4A codetype (42 only at 90000000)

CE000000 80008180
04B37EB4 00000002
E0000000 80008000
4A000000 80000000 <--- offset
14[36EAB0] 00000000<-----
14[36EAB4] 00000000<-----
14[36EAB8] 00000000<----- pointers
14[36EC60] 00000000<-----
14[36EC64] 00000000<-----
14[36EC68] 00000000<-----
E0000000 80008000

eventually it works now?^^
lolz

Deathwolf

#3
lol?

8036EA[A0] + 140000[10] = 1436EAB0 <-- new pointer

8036EA[A0] + 140000[14] = 1436EAB4 <-- new pointer

8036EA[A0] + 140000[18] = 1436EAB8 <-- new pointer

8036EC[50] + 140000[10] = 1436EC60 <-- new pointer

8036EC[50] + 140000[14] = 1436EC64 <-- new pointer

8036EC[50] + 140000[18] = 1436EC68 <-- new pointer

now 14000000 <-- no pointer
and 8036EAA0 - 36EAA0 = 80000000 <-- offset

are you sure your pointers are correct?
lolz

Deathwolf

hmm okay...
sorry I don't know
lolz

wiiztec

#5
The only codes that load pointers in this topic are sharkbyte's

And I'm not sure what's trying to be done here, do the 2 codes do different things? if not and the game alternates between storing the pointer in the 2 addresses then you might not have found a stable pointer or it might be a pointer in a pointer in a pointer

but anyways those codes could be shortened and combined like this

04B37EB4 00000002
48000000 8036EAA0  
DE000000 80008180
58010000 000000C4
DE000000 80008180
12000010 00050000
E0000000 80008000
48000000 8036EC50  
DE000000 80008180
58010000 000000C4
DE000000 80008180
12000010 00050000
E0000000 80008000
If there's any code at all that you want to be button activated, or even able to toggle on & off, and I have the game, just PM me and I'll make it happen

Deathwolf

12 is for 16bit but what about the 05 value?
lolz

wiiztec

#7
12000010 00050000 writes 0000 to 12000010 and 5 half words ahead of it (it writes 0000 to 12000010, 12000012, 12000014, 12000016, 12000018, & 120000C0) so it basicly does what your three lines did in one line

This is explained albeit poorly in the codetype document
If there's any code at all that you want to be button activated, or even able to toggle on & off, and I have the game, just PM me and I'll make it happen

dcx2

Yeah, the 12 codetype is a 16-bit RAM-write & fill.  The 0005 is the YYYY part in the code type doc.  It's how many extra sequential 16-bit half-words will be written to (in addition to the first one, which is why YYYY = 0000 only writes over one 16-bit half-word).

Quote12______ YYYYXXXX : 16bits ram write and fill (po) writes XXXX YYYY+1 times at po+address