MySims Sky Heroes - Wii (U)
Free For All Dogfight - Infinite Missiles (No Reload Time)
C28BC474 00000004
3D6080C2 396B5314
819F0000 7C0B6000
40A20008 C01F000C
D01F0010 00000000
[Insert & Original Source]
0x808BC474 stfs f0, 0x10 (r31)
The address which the missile refill timer is held at, is dynamic. but I found it is consistently in one of six, 48 byte blocks,
with a couple of unique values in the block it happens to be in.
[Replaced With]
loc_0x0:
lis r11, 0x80C2 #ASM Load upper half of unique block value for conditional
addi r11, r11, 0x5314 #ASM Load lower half of unique block value for conditional
lwz r12, 0x0 (r31) #ASM If writing to refill timer, r31 will hold the address of our unique block value for conditional
cmpw r11, r12 #ASM Compare 'em
bne+ not_rocket #ASM If not equal, carry on as usual, if equal then;
lbz r12, 0x2f(r31) #[ADDED] ASM Load unique value to P1 missile memory block
cmpwi r12, 0x1 #[ADDED] ASM Compare it
bne+ not_rocket #[ADDED] #ASM If not equal, carry on as usual, if equal then;
lfs f0, 0xC (r31) #ASM Load f0 with a floating point value conveniently located within the unique block
not_rocket:
stfs f0, 0x10 (r31) #ASM Store it
Free For All Dogfight - Machine Gun Doesn't Overheat
C29DA914 00000003
A183FFD8 718C2AA4
41A20008 EC000028
D0030000 00000000
[Insert & Original Source]
0x809DA914 stfs f0, 0x0 (r3)
The address which the machine gun heat value is held at, is dynamic. but I found it is consistently in one of six, 32 byte blocks,
with a couple of unique values in the block it happens to be in.
[Replaced With]
loc_0x0:
lhz r12, -0x28 (r3) #ASM If machine gun heat value is being increased, -0x28 (r3) will hold the unique block value 0x2AA4
andi. r12, r12, 0x2AA4 #ASM Check to see if increasing machine gun heat value
beq+ loc_0x10 #ASM If not, carry on as usual; if equal then
fsubs f0, f0, f0 #ASM Set f0 to 0x0 (cold machine gun barrel)
loc_0x10:
stfs f0, 0x0 (r3) #ASM Store it
Free For All Dogfight - Infinite Missiles (No Reload Time)
C28BC474 00000004
3D6080C2 396B5314
819F0000 7C0B6000
40A20008 C01F000C
D01F0010 00000000
[Insert & Original Source]
0x808BC474 stfs f0, 0x10 (r31)
The address which the missile refill timer is held at, is dynamic. but I found it is consistently in one of six, 48 byte blocks,
with a couple of unique values in the block it happens to be in.
[Replaced With]
loc_0x0:
lis r11, 0x80C2 #ASM Load upper half of unique block value for conditional
addi r11, r11, 0x5314 #ASM Load lower half of unique block value for conditional
lwz r12, 0x0 (r31) #ASM If writing to refill timer, r31 will hold the address of our unique block value for conditional
cmpw r11, r12 #ASM Compare 'em
bne+ not_rocket #ASM If not equal, carry on as usual, if equal then;
lbz r12, 0x2f(r31) #[ADDED] ASM Load unique value to P1 missile memory block
cmpwi r12, 0x1 #[ADDED] ASM Compare it
bne+ not_rocket #[ADDED] #ASM If not equal, carry on as usual, if equal then;
lfs f0, 0xC (r31) #ASM Load f0 with a floating point value conveniently located within the unique block
not_rocket:
stfs f0, 0x10 (r31) #ASM Store it
Free For All Dogfight - Machine Gun Doesn't Overheat
C29DA914 00000003
A183FFD8 718C2AA4
41A20008 EC000028
D0030000 00000000
[Insert & Original Source]
0x809DA914 stfs f0, 0x0 (r3)
The address which the machine gun heat value is held at, is dynamic. but I found it is consistently in one of six, 32 byte blocks,
with a couple of unique values in the block it happens to be in.
[Replaced With]
loc_0x0:
lhz r12, -0x28 (r3) #ASM If machine gun heat value is being increased, -0x28 (r3) will hold the unique block value 0x2AA4
andi. r12, r12, 0x2AA4 #ASM Check to see if increasing machine gun heat value
beq+ loc_0x10 #ASM If not, carry on as usual; if equal then
fsubs f0, f0, f0 #ASM Set f0 to 0x0 (cold machine gun barrel)
loc_0x10:
stfs f0, 0x0 (r3) #ASM Store it