Mega Cloud [_tZ]
#1
Mega Cloud [_tZ]

This version of the Mega Thundercloud code is shorter and isn't affected by the "item loss" bug.

NTSC-U
C2579DCC 00000006
3D808078 618CF6A8
7D8803A6 4E800021
3C60809B 8803F0B1
2C000000 4182000C
38600008 3880000C
60000000 00000000

PAL
C2580630 00000006
3D808079 618C86B4
7D8803A6 4E800021
3C60809C 880338B9
2C000000 4182000C
38600008 3880000C
60000000 00000000

NTSC-J
C257FFB0 00000006
3D808079 618C7D20
7D8803A6 4E800021
3C60809C 88032919
2C000000 4182000C
38600008 3880000C
60000000 00000000

NTSC-K
C256E688 00000006
3D808078 618C6A74
7D8803A6 4E800021
3C60809B 88031EF9
2C000000 4182000C
38600008 3880000C
60000000 00000000

Source:
Code:
# Inject (PAL, NTSC-U, NTSC-J, NTSC-K): 0x80580630, 0x80579DCC, 0x8057FFB0, 0x8056E688

.set region, ''

.if (region == 'P' || region == 'p')
    .set MegaFunc, 0x807986B4
    .set isOnlineRace, 0x809C38B9
.elseif (region == 'E' || region == 'e' || region == 'U' || region == 'u')
    .set MegaFunc, 0x8078F6A8
    .set isOnlineRace, 0x809BF0B1
.elseif (region == 'J' || region == 'j')
    .set MegaFunc, 0x80797D20
    .set isOnlineRace, 0x809C2919
.elseif (region == 'K' || region == 'k')
    .set MegaFunc, 0x80786A74
    .set isOnlineRace, 0x809B1EF9
.else
    .err
.endif

# Call MegaFunc
lis r12, MegaFunc@h
ori r12, r12, MegaFunc@l
mtlr r12
blrl

# Check if it's an online race
lis r3, isOnlineRace@h
lbz r0, isOnlineRace@l(r3)
cmpwi r0, 0
beq end

# Stuff
li r3, 8
li r4, 12

# Return
end:

Code creator: _tZ
Reply
#2
Also here I can tell you how to turn this code into a "Star Cloud" code. Decrease the fifth instruction by 0x30, (e.g. 76B5 from PAL to 7685) and change "38600008" to "38600004".
Reply
#3
Fyi, this code is using an unsafe range in the Exception Vector Area.

https://mkwii.com/showthread.php?tid=1106
Reply
#4
Nice!
[Image: send7.PNG]
Reply
#5
(09-08-2020, 01:15 PM)Unnamed Wrote: Also here I can tell you how to turn this code into a "Star Cloud" code. Decrease the fifth instruction by 0x30, (e.g. 76B5 from PAL to 7685) and change "38600008" to "38600004".

Thank !
The only problem is when you get hit by another item in the same moment of the end of TC, you cant have the star effect 

Please, can you modify this code and replace Star effect with Bullet Bill ?
Reply
#6
I can't give a guarantee that I'll get it right, but I'll look into it.
Reply
#7
great code glad it is now just a gecko code.
Discord: Alina.#6309
Twitter: @RMCW01

[Image: Screenshot_2021-02-15_184623.png]
Reply
#8
Would it be possible to use the Mega and Star Cloud simultaneously? I mean that there is a 50% chance you'll get a star or a mega mushroom.

regards
Raoul
Reply
#9
(01-05-2021, 04:33 PM)raoul0909 Wrote: Would it be possible to use the Mega and Star Cloud simultaneously? I mean that there is a 50% chance you'll get a star or a mega mushroom.

regards
Raoul
I do not think so. Main reason would be address conflicts. You would have to recode it to act in that manner.
~MarioKartWii.com #1~
Reply
#10
I converted this code to C2 code to avoid using the Exception Vector Area.

(NTSC-U)
c2579dcc 00000006
3d808078 618cf6a8
7d8803a6 4e800021
3c60809b 8803f0b1
2c000000 4182000c
38600008 3880000c
60000000 00000000

(PAL)
c2580630 00000006
3d808079 618c86b4
7d8803a6 4e800021
3c60809c 880338b9
2c000000 4182000c
38600008 3880000c
60000000 00000000

(NTSC-J)
c257ffb0 00000006
3d808079 618c7d20
7d8803a6 4e800021
3c60809c 88032919
2c000000 4182000c
38600008 3880000c
60000000 00000000

(NTSC-K)
C256E688 00000006
3d808078 618c6a74
7d8803a6 4e800021
3c60809b 88031ef9
2c000000 4182000c
38600008 3880000c
60000000 00000000

Source
#inject at 0x80579DCC (NTSC-U)
#inject at 0x80580630 (PAL)
#inject at 0x8057FFB0 (NTSC-J)
#inject at 0x8056E688 (NTSC-K)

.set region, '' #Fill in E, P, J, or K within the quotes for your region when Compiling! Lowercase letters can also be used.

.if    (region == 'E' || region == 'e') # RMCE
    .set func_addr, 0x8078F6A8
    .set val_addr, 0x809BF0B1
.elseif (region == 'P' || region == 'p') # RMCP
    .set func_addr, 0x807986B4
    .set val_addr, 0x809C38B9
.elseif (region == 'J' || region == 'j') # RMCJ
    .set func_addr, 0x80797D20
    .set val_addr, 0x809C2919
.elseif (region == 'K' || region == 'k') # RMCK
    .set func_addr, 0x80786A74
    .set val_addr, 0x809B1EF9
.else # Invalid Region
    .abort
.endif

lis r12,func_addr@h
ori r12, r12,func_addr@l
mtlr r12
blrl
lis r3,val_addr@h
lbz r0,val_addr@l(r3)
cmpwi r0,0
beq- branch
li r3,8
li r4,12
branch:
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)