Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 548
» Latest member: absmagnat
» Forum threads: 1,669
» Forum posts: 12,127

Full Statistics

Online Users
There are currently 82 online users.
» 0 Member(s) | 78 Guest(s)
Applebot, Bing, Facebook, Google

Latest Threads
Wiimote Speaker Sound Pla...
Forum: Incomplete & Outdated Codes
Last Post: _Ro
3 hours ago
» Replies: 0
» Views: 11
Make it to 10,000
Forum: General Discussion
Last Post: Cealgair
4 hours ago
» Replies: 5,854
» Views: 4,279,233
Mini Turbo Functionality
Forum: Code Support / Help / Requests
Last Post: DracoTH
Yesterday, 05:55 PM
» Replies: 0
» Views: 28
Frame rate / game speed
Forum: Code Support / Help / Requests
Last Post: Katos
05-15-2024, 05:46 PM
» Replies: 0
» Views: 66
Force 30 FPS [Nick Reynol...
Forum: Misc/Other
Last Post: Katos
05-13-2024, 02:23 PM
» Replies: 4
» Views: 20,326
Vehicle Stats Modifier [J...
Forum: Offline Non-Item
Last Post: Katos
05-13-2024, 10:27 AM
» Replies: 7
» Views: 17,072
Blue shell cooldown [Gabe...
Forum: Online; Item
Last Post: Gaberboo
05-13-2024, 05:29 AM
» Replies: 0
» Views: 61
Custom Kart Working on Do...
Forum: Code Support / Help / Requests
Last Post: Fifty
05-10-2024, 08:37 PM
» Replies: 5
» Views: 361
Connect to AltWFC again
Forum: Incomplete & Outdated Codes
Last Post: marito_yo
05-03-2024, 06:27 AM
» Replies: 0
» Views: 172
Request: Mission Mode - P...
Forum: Code Support / Help / Requests
Last Post: Wingcapman
05-02-2024, 08:54 PM
» Replies: 0
» Views: 142

 
  Wiimote Speaker Sound Player Cycler [Ro]
Posted by: _Ro - 3 hours ago - Forum: Incomplete & Outdated Codes - No Replies

Wiimote Speaker Sound Player & Cycler [Ro]

This code is an idea i had earlier today - it allows cycling thru every sound & music of the game and have it play on the wiimote speaker. Most of the sounds do play in game too, but some don't, only playing on the wiimote itself. This is just an experimental code, thus it isn't ported for other regions and more of a proof of concept. JoshuaMK's millisecond timer modifier code is used to display the current sound index ID that is selected. The code only works in game.

This code makes uses address 0x800016FC thru 0x800016FE. Make sure no other codes use these addresses.

Here's a small demonstration of the code: https://www.youtube.com/shorts/aiNJ7njQfS4

NTSC-U

NTSC-U
C2705C0C 00000011
81830000 9421FF80
BC610008 3CA08034
A0C51462 3FE08000
70CB000C 41820058
889F16FE 2C040001
41820044 A09F16FC
70CB0008 4082000C
38840001 48000008
3884FFFF B09F16FC
3D808070 618C1934
7D8903A6 4E800421
38800003 3D808070
618CC1DC 7D8903A6
4E800421 39600001
41820008 39600000
997F16FE B8610008
38210080 00000000
C27ED9F8 00000002
3D808000 A38C16FC
60000000 00000000
lwz r12,0(r3)
stwu r1,-128(r1)
stmw r3,8(r1)
lis r5, 0x8034
lhz r6, 0x1462 (r5)
lis r31, 0x8000
andi. r11, r6, 0xC
beq no
lbz r4, 0x16FE (r31)
cmpwi r4, 1
beq skip
lhz r4, 0x16FC (r31)
andi. r11, r6, 0x8
bne sub
addi r4, r4, 1
b str
sub:
subi r4, r4, 1
str:
sth r4, 0x16FC (r31)
lis r12, 0x8070
ori r12, r12, 0x1934
mtctr r12
bctrl - Call play sound function
li r4, 3
lis r12, 0x8070
ori r12, r12, 0xC1DC
mtctr r12
bctrl - Call wiimote play sound function
skip:
li r11, 1
beq skip2
no:
li r11, 0
skip2:
stb r11, 0x16FE (r31)
lmw r3,8(r1)
addi r1,r1,128

Code creator: Ro
Code credits: JoshuaMK (Millisecond Timer Modifier - to display current sound index)

Print this item

  Mini Turbo Functionality
Posted by: DracoTH - Yesterday, 05:55 PM - Forum: Code Support / Help / Requests - No Replies

Hey! I was hoping if anyone could help me out with this, so I've been making a statmod, where I basically rebalanced all vehicles taking mk8dx into account, but then realized that the vehicles with higher mini turbo didn't have the same advantages as in 8dx, since Mini Turbo just affects the time a mini turbo lasts and doesn't affect how much it takes to charge one.
Is there any way to make it so that depending on the Mini turbo duration stat of a vehicle the time it takes to charge a Mini Turbo is reduced or increased?

Print this item

  Frame rate / game speed
Posted by: Katos - 05-15-2024, 05:46 PM - Forum: Code Support / Help / Requests - No Replies

Hello,

Does anyone know anything about untiing fps and game speed ?
With the help of "Force 30 FPS" gecko i manage to get :

30 fps / half speed      : 004250D4 00000002

60 fps / double speed : 0029FD69 00000001

Correct me if i'm wrong :

There is no memory address to only divide game speed as the game don't have that kind of feature.
The instructions at 004250D4 and 0029FD69 exists because of the 30 fps limitation in split screen in order to get a normal game speed after dividing it.
The way would be to reverse engineer the game and modify something ?

What are your thoughts ?

Print this item

  Blue shell cooldown [Gaberboo]
Posted by: Gaberboo - 05-13-2024, 05:29 AM - Forum: Online; Item - No Replies

PAL
c2795664 00000005
3d40807b a52a832e
a90a0004 5529801e
7ce9402e 3940XXXX
91470038 4e800020
60000000 60000000
NTSC-U
c278c658 00000005
3d40807d a52a50ee
a90a0004 5529801e
7ce9402e 3940XXXX
91470038 4e800020
60000000 60000000
NTSC-J
c2794cd0 00000005
3d40807a a52a799a
a90a0004 5529801e
7ce9402e 3940XXXX
91470038 4e800020
60000000 60000000
NTSC-K
c2783a24 00000005
3d408079 a52a66ee
a90a0004 5529801e
7ce9402e 3940XXXX
91470038 4e800020
60000000 60000000

XXXX is time in frames

Code:
.set region,

.if (region == 'P')
    .set ItemHolderPlayer_useBlueShell2,0x8079565c
    .set Item_ItemSlotTable_sInstance, 0x809c3670 # wstrt couldn't port this...
    .set ItemHolderPlayer_useBlooper, 0x807a81b4
.elseif (region == 'E')
    .set ItemHolderPlayer_useBlueShell2,0x8078c650
#    .set Item_ItemSlotTable_sInstance,
    .set ItemHolderPlayer_useBlooper, 0x807d4f74
.elseif (region == 'J')
    .set ItemHolderPlayer_useBlueShell2,0x80794cc8
#    .set Item_ItemSlotTable_sInstance, 
    .set ItemHolderPlayer_useBlooper, 0x807a7820
.elseif (region == 'K')
    .set ItemHolderPlayer_useBlueShell2,0x80783a1c
#    .set Item_ItemSlotTable_sInstance,
    .set ItemHolderPlayer_useBlooper, 0x80796574
.else
    .err
.endif

#inject at 0x80795664 PAL
#inject at 0x8078c658 NTSC-U
#inject at 0x80794cd0 NTSC-J
#inject at 0x80783a24 NTSC-K

lis r10, (ItemHolderPlayer_useBlooper + 0x17a)@ha
lhzu r9, (ItemHolderPlayer_useBlooper + 0x17a)@l (r10)
lha r8, 0x4 (r10)
slwi r9, r9, 16
lwzx r7, r9, r8
li r10, XXXX
stw r10, 0x38 (r7)


blr

Print this item

  Connect to AltWFC again
Posted by: marito_yo - 05-03-2024, 06:27 AM - Forum: Incomplete & Outdated Codes - No Replies

mua kart wii (altwfc)

Spoofs your gamename and key to mua2wii so that you can matchmake on AltWFC with Mario Kart Wii 

{NTSC-U}

06895ae8 00000008
6D756132 77696900
062ef3a0 00000007
51697A4D 33410000
06895af8 00000007
51697A4D 33410000

{PAL} untested

0689A1B8 00000008
6D756132 77696900
062F3720 00000007
51697A4D 33410000
0689A1C8 00000007
51697A4D 33410000

{NTSC-J}

06899318 00000008
6D756132 77696900
062F30A0 00000007
51697A4D 33410000
06899328 00000007
51697A4D 33410000

{NTSC-K}

Code creator: marito_yo

Print this item

  Request: Mission Mode - Play Custom BRSTM depending on the Mission SZS name
Posted by: Wingcapman - 05-02-2024, 08:54 PM - Forum: Code Support / Help / Requests - No Replies

Since we have a few options for custom BRSTM files being played for race courses, it would be nice to have this as a feature for the unused Mission Mode as well.
In vanilla Mario Kart Wii (or simply the game without any custom distributions involved), a mission's background music is connected just like how race courses and battle arenas work; it loads from a music ID slot and loads specifically just that.

Mission Mode is a special case since the current code we have (the one published by MrBean35000vr), while it's awesome to see it functional to an extend, there are many things either wrong or incomplete with it, and sadly there ARE Gecko codes that conflict with it which somehow can alter the BRSTM being played for the music (no idea what the conditions are for this to happen, but there is a way to somehow load the "last played" course/arena music ID (if no course or arena has been played before then it loads Luigi Circuit by default)).
Another interesting quirk is that Mission Mode's files are pretty flexible when it comes to making your own missions. Like your first mission doesn't have to be named mr00.szs; you can change it so that it actually can load - for example - mr11.szs as your first mission just to order them properly (11 to 18 for Mission 1-1 to 1-8, 21 to 28 for Mission 2-1 to 2-8 etc.).

The reason why I'd like to see a custom BRSTM code for Mission Mode being made is because we can have custom music for the bosses and for the coin missions just to name a few (if we want to make use of different variants or remixes from the same song, it'd give us more freedom for modpacks that include missions), as well as unique missions that include a race course or battle arena that doesn't appear in the other modes.

Print this item

  Custom Kart Working on Dolphin Emulator but not on Wii U??
Posted by: CorvoPSY - 04-27-2024, 12:43 PM - Forum: Code Support / Help / Requests - Replies (5)

NT is SB

Print this item

  Request: Custom brsars per-track
Posted by: lschlick - 04-25-2024, 05:45 PM - Forum: Code Support / Help / Requests - No Replies

There are some custom tracks that would benefit greatly from having custom sound effects. For example, there are a few custom tracks I have seen lately with these custom bird objects that fly away when you get close to them. Oddly enough, they sound like the Nokis from Super Mario Sunshine, because that's the sound that they default to. If I were to replace the Noki voices in the brsar with bird chirping, it may fix the issue, but then we have the issue of the actual Nokis (in tracks such as GCN Peach Beach) now making bird chirping sounds instead of their regular voices. Then there are also lots of custom tracks that just kind of feel "dead" in the sense that they are lack atmosphere. And the sound effects that would be required to give them atmosphere don't exist in the default brsar.

To fix this problem, here is the code I am requesting.

If a custom track .szs file contains a brsar file, then any entries in that brsar file should override the default ones when that track is loaded. Since an entire brsar is quite large (~ 100 MB compared to ~ 3 MB for a typical custom track), the custom brsar should only contain the brsar entries you want to override.

To use this code: When you open a brsar in BrawlCrate, there are two panels you can see. On the left, there are entries organized within a tree-like structure with folders. On the right, there is a separate list of entries sorted by index. If you want to replace entries in the left panel with custom entries, then in your custom brsar you would delete all entries and folders in the left panel except for the ones making up the paths of the entries you want to edit. If you want to replace entries in the right panel, then in your custom brsar you would delete all entries in the right panel except the ones you want to edit. Once you have made all the edits you want to make, save the brsar and then add it to your custom track folder, then use wszst to build the folder into a .szs file.

Print this item

  E-mails not working on this forum
Posted by: seanmcnally - 04-17-2024, 09:23 PM - Forum: General Discussion - Replies (3)

Hey there,

This might be an issue you guys are already aware of, but it seems e-mail notifications aren't working for subscribed threads on this forum.  I double checked my spam folder, nothing there either.

Print this item

  More missing info from Broadway Manual (lfd & stfd)
Posted by: Vega - 04-15-2024, 10:04 PM - Forum: Coding & Hacking General Discussion - No Replies

Expanding on my previous thread HERE about missing info in the Broadway Manual, it appears I've ran into some more omitted information of the 1.0 Version of the Broadway Manual. I was doing some real hardware tests of floating point loads and stores, so I can know how to code them into my Broadway PPC Instruction Simulator. Anyway, I was running into some weird results, but after some tinkering, I found out that not only does lfs+stfs operations varie on the HID2 PSE bit, so does lfd+stfd.

Here's what occurs~
lfs
PSE low: 32-bit Single Float loaded from EA. Converted to 64-bit form. Placed into fD
PSE high: 32-bit Single Float loaded from EA. Placed into both ps0 and ps1 of fD

lfd (PSE high stuff missing from Manual)
PSE low: 64-bit Double Float loaded from EA. Placed into fD
PSE high: 64-bit Double Float loaded from EA. Converted to 32-bit Single Precision. Placed into ps0 with ps1 being left undefined***

stfs
PSE low: Value in fS is converted to a 32-bit Single Precision float. That float is stored at EA.
PSE high: ps0 of fS stored at EA

stfd (PSE high stuff missing from Manual)
PSE low: fS stored at EA
PSE high: Value in fS's ps0 converted to 64-bit form. That 64-bit float is stored at EA.

***Tested a handful of numbers, and every time lfd was done (when HID2 PSE high), ps1 was always written as 0x3F800000. I doubt this is a "hardcoded" constant, most likely it's just undefined (junk).

Obviously, if there are data-type conversions (i.e. denorms), those still occur in accordance to what is stated in the Broadway Manual.

Here are two snippets of code that confirms this. These are hooked to the Shared Item Address and will only execute when HID2 PSE is high. I didn't want to set HID2 PSE manually because that requires I-Cache invalidation & disabling. Run these on a real Wii console as Dolphin will not emulate this correctly.

Snippet 1 does this:

  • Sets 0x40341000 00000000 in memory via GPRs
  • Uses lfd to load it
  • Stores it via stfs, psq_st, and stfd
  • Results of the 3 stores are printed to screen in that order

Snippet 2 does this:
  • Sets 0x40341000 00000000 in memory via GPRs
  • Uses lfs to load it
  • Stores it via stfs, psq_st, and stfd
  • Results of the 3 stores are printed to screen in that order

I am using the integer value 0x40341000 00000000 for the test because this is a normalized (valid) double-precision float. Also, if it is read as single (0x40341000), this is a normalized (valid) single-precision float. Since both these floats are normalized and the exponent bits are greater than 896, there are zero data-type conversions. Only conversions are the standard width/precision changes mentioned earlier which always occur.

Snippet 1 will result as:
41A08000 00000000 (41A08000 written from the stfs)
41A08000 3F800000 (written from the psq_st, this shows what was loaded via lfd, ps1 is most likely undefined/junk as explained earlier)
40341000 00000000 (stfd, this gets written because 41A08000 is converted to its 64-bit form)

Snippet 2 will result as:
40341000 00000000 (40341000 written from the stfs)
40341000 40341000 (written from psq_st, this shows what was loaded via lfs, ofc lfs loads same value into ps0 and ps1)
40068200 00000000 (stfd, this gets written because 40068200 is converted to its 64-bit form)

Here are the codes~

Snippet 1:
Code:
#C2 Address 807BA164
#Pick up box, see result on screen

.set doubleword1, 0x40341000
.set doubleword2, 0x00000000

.set HID2, 920
.set PSE, 0x2000 #low bits excluded

#Shared Item Default instruction
stw r3, 0x0020 (r23)

#Check PSE bit of HID2
mfspr r12, HID2
andis. r12, r12, PSE
beq- the_end

#Set r31 to 0x80001500
lis r31, 0x8000
ori r31, r31, 0x1500

#Set double word to store
lis r3, doubleword1@h
ori r3, r3, doubleword1@l
lis r4, doubleword2@h
ori r4, r4, doubleword2@l
stw r3, 0 (r31)
stw r4, 0x4 (r31)

#Prove lfd, stfs, and stfd
#Load float
lfd f1, 0 (r31) #Loads as 0x41A08000 3F800000

#Store float, stores as 0x41A08000
stfs f1, 0 (r31)

#Store paired single, stores as 0x41A08000 3F800000
psq_st f1, 0x8 (r31), 0, 0

#Store using stfd, will store as 40341000 00000000
stfd f1, 0x10 (r31)

#Load the fpr values for sprintf
lwz r5, 0 (r31)
lwz r6, 0x4 (r31)
lwz r7, 0x8 (r31)
lwz r8, 0xC (r31)
lwz r9, 0x10 (r31)
lwz r10, 0x14 (r31)

#Set r4 arg for sprintf
bl setsprintf
.asciz "%08X %08X\n%08X %08X\n%08X %08X"
.align 2
setsprintf:
mflr r4

#Set r3 arg for sprintf
addi r3, r31, 0x40

#Clear cr1 eq bit cuz no floats for sprintf
crclr 6

#Call sprintf
lis r12, 0x8001
ori r12, r12, 0x1A2C
mtctr r12
bctrl

addi r5, r31, 0x40

#Setup OSFatal args
bl setupfatal
.long 0xFFFFFFFF
.long 0
setupfatal:
mflr r3
addi r4, r3, 4

#Call OSFatal
lis r12, 0x801A
ori r12, r12, 0x4EC4
mtctr r12
bctr

the_end:


Snippet 2:
Code:
#C2 Address 807BA164
#Pick up box, see result on screen

.set doubleword1, 0x40341000
.set doubleword2, 0x00000000

.set HID2, 920
.set PSE, 0x2000 #low bits excluded

#Shared Item Default instruction
stw r3, 0x0020 (r23)

#Check PSE bit of HID2
mfspr r12, HID2
andis. r12, r12, PSE
beq- the_end

#Set r31 to 0x80001500
lis r31, 0x8000
ori r31, r31, 0x1500

#Set double word to store
lis r3, doubleword1@h
ori r3, r3, doubleword1@l
lis r4, doubleword2@h
ori r4, r4, doubleword2@l
stw r3, 0 (r31)
stw r4, 0x4 (r31)

#Prove lfs, stfs, and stfd
#Load float
lfs f1, 0 (r31) #Loads as 0x40341000 40341000

#Store float, stores as 0x40341000
stfs f1, 0 (r31)

#Store paired single, stores as 0x40341000 40341000
psq_st f1, 0x8 (r31), 0, 0

#Store using stfd, will store as 0x40068200 00000000
stfd f1, 0x10 (r31)

#Load the fpr values for sprintf
lwz r5, 0 (r31)
lwz r6, 0x4 (r31)
lwz r7, 0x8 (r31)
lwz r8, 0xC (r31)
lwz r9, 0x10 (r31)
lwz r10, 0x14 (r31)

#Set r4 arg for sprintf
bl setsprintf
.asciz "%08X %08X\n%08X %08X\n%08X %08X"
.align 2
setsprintf:
mflr r4

#Set r3 arg for sprintf
addi r3, r31, 0x40

#Clear cr1 eq bit cuz no floats for sprintf
crclr 6

#Call sprintf
lis r12, 0x8001
ori r12, r12, 0x1A2C
mtctr r12
bctrl

addi r5, r31, 0x40

#Setup OSFatal args
bl setupfatal
.long 0xFFFFFFFF
.long 0
setupfatal:
mflr r3
addi r4, r3, 4

#Call OSFatal
lis r12, 0x801A
ori r12, r12, 0x4EC4
mtctr r12
bctr

the_end:

In conclusion, now you know. If you find any of this incorrect, please let me know.

Print this item