Brothers in Arms: Road to Hill 30 [RI8P41]

Started by Dr.Pepper, September 28, 2008, 08:36:55 AM

Previous topic - Next topic

Dr.Pepper

Heh, yet again pretty nasty to find codes from since weapon location can change from mem1 to mem2 (and current wiird version bugs in those searches), but finally found pointer in pointer location which works. And NOP'in the subtraction code is bad idea, since enemy damage uses the same sub :)

Unlimited Ammo and Unlimited Clip [Dr.Pepper]
48000000 803F937C
DE000000 80009300
140003B4 000000FF
58010000 000002C8
DE000000 80009300
140002B4 00000EFF
E0000000 80008000

Unlimited Grenades [Dr.Pepper]
48000000 90189718
DE000000 90009300
58010000 00000554
DE000000 80009300
140002B0 00000007
E0000000 80008000

Unlimited Health Against Handguns [Dr.Pepper]
48000000 803B78A8
DE000000 80009300
58010000 00003BE4
DE000000 90009300
1400039C 0000FFFF
E0000000 80008000

(You still can die on machine gun fire etc fatal shots and explosions)


jorrick16

can u add some codes for Brothers in Arms earned blood to?

Dr.Pepper

Read forum rules again, request go to request thread, not in cheat codes thread. By requesting them here, I will not be releasing those codes for a while, even if I would have them...

Black_Wolf

hmm sorry about this again, I keep hyjacking your threads asking for help on stuff lol.

I was just looking for some clarification on the pointer in pointer code writing in wii version. I know that its like POINTER->POINTER->CODE kind of thing, but how did you write this with the wiird code types? Do you change the base address to read one pointer, and use the pointer address to read the other or something?

Also could this be done in asm, I know that in MIPS (similar) its like this

- lui t0, $FIRST 2 BYTES OF BASE POINTER
- lw t0, $LAST 2 BYTES OF BASE POINTER(t0)
- lw t1, $OFFSET1(t0)
- lw t2, $OFFSET2(t1)

lui being loading the UPPER immediete (first 2 bytes) and lw being just a simple load word, BASED off another register

Thanks again for listening to me lol

Dr.Pepper

from: http://www.usbgecko.com/codetypes.htm
CST4 : Load into Pointer
48TYZ00N XXXXXXXX :
48000 : po = [XXXXXXXX]
48010 : po = [ba+XXXXXXXX]
58010 : po = [po+XXXXXXXX]

Pointer in Pointer code goes pretty much the same way like plain simple pointer code (ptr+offset), you load pointer address with 48-code (which loads the value from XXXXXXXX to po), and for pointer in pointer (ptr+offset)+offset, you just add add 5801000 code which loads the value from (po + xxxxxxxx) to po. If we take unlimited granades as example,
Unlimited Grenades [Dr.Pepper]
48000000 90189718 # loads value from 0X90189718 to po
DE000000 90009300 # checks that po is in range of 0x90000000 -> 0x93000000, and continues if it is
58010000 00000554 # loads value from po+offset(0x554) into po
DE000000 80009300 # checks that po is in range of 0x80000000 -> 0x93000000, and continues if it is
140002B0 00000007 # constant 32bit write to po+offset [(0x90189718+offset(0x554))+offset(0x2b0)]
E0000000 80008000 # end

Black_Wolf

awesome man thanks again, I didn't realise there was a whole nother code type for it, I'll have to read through it again.

Thanks again