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,666
» Forum posts: 12,102

Full Statistics

Online Users
There are currently 134 online users.
» 1 Member(s) | 130 Guest(s)
Bing, Discord, Google, JoshuaMK

Latest Threads
Make it to 10,000
Forum: General Discussion
Last Post: Fifty
4 hours ago
» Replies: 5,832
» Views: 4,263,501
Force 30 FPS [Nick Reynol...
Forum: Misc/Other
Last Post: Katos
Yesterday, 02:23 PM
» Replies: 4
» Views: 20,273
Vehicle Stats Modifier [J...
Forum: Offline Non-Item
Last Post: Katos
Yesterday, 10:27 AM
» Replies: 7
» Views: 17,016
Blue shell cooldown [Gabe...
Forum: Online; Item
Last Post: Gaberboo
Yesterday, 05:29 AM
» Replies: 0
» Views: 34
Custom Kart Working on Do...
Forum: Code Support / Help / Requests
Last Post: Fifty
05-10-2024, 08:37 PM
» Replies: 5
» Views: 317
Connect to AltWFC again
Forum: Incomplete & Outdated Codes
Last Post: marito_yo
05-03-2024, 06:27 AM
» Replies: 0
» Views: 144
Request: Mission Mode - P...
Forum: Code Support / Help / Requests
Last Post: Wingcapman
05-02-2024, 08:54 PM
» Replies: 0
» Views: 135
Boot into TT cup selectio...
Forum: Misc/Other
Last Post: Vega
04-26-2024, 08:27 PM
» Replies: 3
» Views: 3,024
Request: Custom brsars pe...
Forum: Code Support / Help / Requests
Last Post: lschlick
04-25-2024, 05:45 PM
» Replies: 0
» Views: 97
E-mails not working on th...
Forum: General Discussion
Last Post: Fifty
04-19-2024, 04:56 AM
» Replies: 3
» Views: 627

 
  Fixing Blackscreen Everywhere on Debian 12 using NVidia 3080 12gb
Posted by: Vega - 04-09-2024, 03:18 PM - Forum: General Discussion - No Replies

I've bought a new setup (computer, monitor, etc) from my brother yesterday. A huge upgrade from my 7 year old Desktop, lmao.

Tried installing Debian 12. Install went great, but I was getting Blackscreen everywhere immediately after the GRUB bootloader echoed some basic outputs (right before the graphics are initiated).

So as a personal note for future reference and the off chance somebody needs this.. here's how to fix it!

The issue:
Blackscreen or Very Dark Gray Screen (may flicker) after GRUB screen. Using CTRL+ALT+F2 (to switch to TTY mode) does *NOT* work (still Blackscreens)

The solution:
1. Power off. Then power on.
2. Once GRUB loads, press down on keyboard to stop it from auto-booting
3. Navigate down on keyboard to pre-select  "Advanced Options for..."  Do *NOT* press Enter. Just be hovered over it
4. Press e on your keyboard to bring up GRUB's built in editor for the Advanced Options
5. The config file to how Grub will boot Debian will be shown
6. Using the arrow keys, navigate until you see the following...
quiet
7. Change that text to now be this...
quiet nomodeset
8. Now press F10 to save and exit. This will apply the new config file for the next boot *ONLY*.
9. You should be at a screen where you can select to boot regular Debian 12 or Debian 12 in recovery mode.
10. Choose regular Debian 12
11. Debian 12 will boot but using BIOS graphics.
12. Log in as root and open a terminal, run the following commands
apt update
apt upgrade
apt install nvidia-detect
13. Once nvidia-detect has been installed, run it...
nvidia-detect
14. The program will output a list of package(s), that you will need to install. For me it was just nvidia-drivers. You may have more or different packages
15. Install all the packages that were listed!!!
16. Once all packages are installed, reboot your computer.
17. GRUB will be back to using the original/default config file and you should now see that the graphics are fixed once Debian 12 boots.

Print this item

  Maximum Player Collision
Posted by: MarioKartUltimate - 04-06-2024, 11:09 PM - Forum: Code Support / Help / Requests - No Replies

Is there a code that provides Max Collision. I mean a code where if you bump into someone, they are send flying off instantly.

Print this item

  Load State at Breakpoint (specific game event)
Posted by: seanmcnally - 03-25-2024, 01:08 AM - Forum: Coding & Hacking General Discussion - Replies (1)

This is the story of a cheat code I wanted to make, was unable to make, and the hack-y solution I came up with to get around it.

In 4P mode, I was looking for a way to jump back to the character selection screen after each race, that way in a tournament setting where the players change each race, you wouldn't need to quit to the main menu each time.  As you probably know, normal behavior is that after each race, you press "next race", and it goes to the cup selection screen assuming you want to play again with the same character/vehicle selections.

I started out by trying to figure out the instruction where that menu - the cup selection screen - is loaded after you press next race.  Using this list, I was able to find that the cup selection menu is referred to as 6E, so I went to work with some excruciating dynamic analysis, going frame by frame until I found something that was writing 6E.  Good news, I did!  8070ca50 contains stw r30, 0x0004 (r29), and r30 contains 6E after you press next race.  Furthermore, r9 = 17 when you're accessing the cup selection screen from a new match, and r9 = 5 when you're accessing it from the "Next Race" button.  So you'd think I could just write a code to use load instruction on r30 before that 6E is written, and put something like 6B (Character Select) instead, but that didn't work.  The byte gets written successfully, but the game still goes into the cup selection screen.

It was at this point that I realized, maybe I can do this without affecting game logic at all.  I'm going to be using Dolphin for the tournament anyway, so what if, instead of a cheat code, I just loaded a state when that 8070ca50, r9 == 5 breakpoint hit?  I could just use Python to watch dolphin.log, and send a hotkey to load a state that jumps to the character select screen.

So....



Here's a very silly solution to my problem:

This is adapted from my Logging Game Events to Text File post.

1) In Dolphin, go to  Options > Configuration > Interface > Enable Debugging UI.

Go to View, make sure Breakpoints, Log, and Log Configuration are checked. Then, in the Log Configuration tab, uncheck everything except "Master Log (MASTER)" and "Memory Interface & Memory Map (MI)".  At this point you should probably find Dolphin's log file (dolphin.log) and delete it, that way you're starting fresh (on Windows it is found at C:\Users\YourUserName\AppData\Roaming\Dolphin Emulator\Logs).

2) Add 8070ca50 as a breakpoint for NTSC-U.  In the condition box, write r9 == 5.

These are the breakpoints for other versions (untested)
  • NTSC-U  8070ca50
  • PAL 0x807144f4
  • NTSC-J 0x80713b60
  • NTSC-K 0x8070289c

3) Save a state.  In my example, I'm using State Slot 1, default hotkey is Shift+F1 to save, F1 to load.

4) Run this Python script.  You'll need to install the keyboard module (run cmd as admin, pip install keyboard):

load-state-after-bp.py
Code:
import time
import os
import keyboard

class LogFileWatcher:
    def __init__(self, log_file):
        self.log_file = log_file
        self.last_position = 0
        self.current_data = ""
        print("Watching log file:", log_file)

    def watch(self):
        try:
            while True:
                self.dump_changes()
                time.sleep(0.05)
        except KeyboardInterrupt:
            print("Watcher stopped.")

    def dump_changes(self):
        try:
            with open(self.log_file, 'r') as f:
                f.seek(self.last_position)
                new_data = f.read()
                if new_data:
                    if new_data.startswith('\r\n'):
                        new_data = new_data[2:]  # Remove the first two characters (CR LF)
                    elif new_data.startswith('\n'):
                        new_data = new_data[1:]  # Remove the first character (LF)
                    self.current_data = new_data
                    print("Changes detected:")
                    print(self.current_data)
                    if "1. Vars:  r9=5" in new_data:
                        print("True")
                        keyboard.press('f1')  # Press F1 key
                        time.sleep(0.1)  # Hold F1 for 100 milliseconds
                        keyboard.release('f1')  # Release F1 key
                    self.last_position = f.tell()
        except Exception as e:
            print("Error occurred:", str(e))

if __name__ == "__main__":
    log_file = "C:\\Users\\Sean\\AppData\\Roaming\\Dolphin Emulator\\Logs\\dolphin.log"
   
    watcher = LogFileWatcher(log_file)
    watcher.watch()


5) Be sure to edit the log_file variable near the bottom to use your computer's username instead of mine.

And that's it.  Again, not ideal, but it does work.  I'm also aware there's a Dolphin module for Python that avoids needing to use keypresses and can just load the state directly, feel free to have a go at that if you want.

Print this item

  Game Resets after "Next Race" [SeanMcNally]
Posted by: seanmcnally - 03-23-2024, 04:04 AM - Forum: Incomplete & Outdated Codes - Replies (2)

Not even sure if I can call myself the creator of this one, since it basically just rips the activator out of Diamond's Press Button to Reset to Title Screen and puts it at an insertion address that I found.  The cup selection screen can be accessed from a bunch of different ways.  If r9 = 5, that means the cup selection screen was accessed from pressing "Next Race" after a race.  If r9 = 17, the cup selection screen was accessed from the starting a new grand prix or versus race and selecting your character, vehicle, and drift options.  This code checks for the first scenario.  Not ported, but here it is, for NTSC-U Only:

C270CA50 00000006
93DD0004 2C090005
41820008 48000020
3D80809B 618CD508
806C0000 3D808060
618C4CD8 7D8803A6
4E800021 00000000

Source Code:

Code:
# Insertion Address: 8070ca50 for NTSC-U
#
stw r30, 0x0004 (r29) # Default instruction
cmpwi r9, 5          # If r9 = 5, this instruction is running after pressing "next race"
# Worth noting that if r9 = 17, this instruction is running after the character select screen
beq game_reset # If five, reset the game
b end_code # If not, end the code
# This part resets the game, Diamond wrote this code
game_reset:
lis r12, 0x809B
ori r12, r12, 0xD508
lwz r3, 0(r12)
lis r12, 0x8060
ori r12, r12, 0x4CD8
mtlr r12
blrl
end_code:

Credits: Diamond, for creating the part that resets the game.

Print this item

  Artemis (PPC Instruction Simulator)
Posted by: Vega - 03-20-2024, 02:27 AM - Forum: Coding & Hacking General Discussion - Replies (2)

Artemis




Created by Vega

Version: 0.0-r051



What is Artemis?
Artemis is a bare-bones PowerPC 32-bit Instruction Simulator written in ARM64 Assembly.

Why the name Artemis?
Artemis is one of Daysha's cats. He is Waltress's brother.

Why write this in ARM64 Assembly?
Needed a project in ARM64 to work on after learning the language.

What can Artemis do right now?
Source does compile but it will most likely fault since current revision is untested. At the moment, Artemis can execute basic instructions in physical memory. IBAT translation works in theory. DBAT translation and Page Tables are not implemented yet. I-Cache is sort of implemented but won't work since MEI protocol isn't built yet. Effects from most items such as HIDx SPR settings are not working yet. Anything FPSCR related won't work either.

What do I need to run Artemis?
QEMU installed on a Linux Machine. Read the README.md for the rest.

What are the goals of Artemis?
The goal is to accurately simulate every Broadway instruction and register. Please note that this is *not* meant to replace Dolphin or even emulate a Wii.

Print this item

  Finding breakpoint for "Course Overview" cutscene
Posted by: seanmcnally - 03-17-2024, 12:09 AM - Forum: Coding & Hacking General Discussion - Replies (5)

Trying to find a good insertion point for an event that doesn't really have any numbers associated with it, and isn't really triggered by anything other than normal game function - the opening "course overview" cutscene that plays at the beginning of each race.  The eventual idea is that I want to prevent the player from being able to skip this cutscene.  I'm guessing I can either nop out the function that skips it, or maybe find a way of preventing input while the scene is active.

The trouble is I'm unsure how to find the insertion point for something like this.  It's not an item, it doesn't really have to do with regular gameplay.  I tried putting a breakpoint on my controller to see if I could maybe figure out how the instruction is being executed when you skip the cutscene, but nothing I tried seemed to provide anything that made sense.  How would I go about finding the right insertion point?

Any tips greatly appreciated, thank you!

Print this item

  Condition box on Dolphin’s Breakpoint menu?
Posted by: seanmcnally - 03-16-2024, 02:59 AM - Forum: Coding & Hacking General Discussion - Replies (6)

Apologies if this has already been answered elsewhere, but I haven’t been able to find any documentation on this. What exactly does the “condition” box do inside Dolphin’s breakpoint menu?[Image: 38df161860813b8846201.jpg]

Print this item

  Stop Time [Ro]
Posted by: _Ro - 03-13-2024, 07:48 AM - Forum: Incomplete & Outdated Codes - No Replies

Stop Time [Ro]

This code will "stop time" with a press of a button, quite literally. In other words, when this code is enabled, "everything" will "freeze", EXCEPT YOU - Items, CPUs, objects, timer,, UI animations and other elements will completely freeze/stop, EXCEPT FOR YOUR KART! You will be able to control your kart and throw stationary items while everything is frozen, since CPUs will be frozen you can abuse them by placing items in front of them or hitting or bumping them then unfreezing time, all actions done while frozen will be done after unfreezing. It is hard to explain, it is better to watch the demonstration video of the code by clicking here (poor showcase video). Press the set activator, the code will enable, press it again, the code will disable.

Unfortunately, this code is incomplete, there are elements I wanted to implement that I couldn't find or had issues and I have no more time or interest to look into these. These elements are:


Freeze FIB Anim (One that freezes it at the current rotation rather than forcing a specific one)
Freeze Character Anim That is In Play (Freezing character animation while one is playing, for CPUs)
Freeze Object Animation (Some objects are still animated, even though they are frozen)
Freeze Course Texture Animation (Found but instead of freezing it was currently, breaks it as if there was no anim present)
Freeze Explosion (So explosions are frozen during stop)
Better Freeze Items (Unfortunately, it doesn't seem like this game has a main calc function that handles multiple item stuff, including the explosion as well, so it's done in a bad way)
Freeze Kart Animation (Karts are still animated during stop)
No Engine Sound (One that changes live. Actually forgot to look into this)

This code is a recreation of Fosfour5933's Mario Kart 7 Stop Item Hack. I also made my own version of this code in Mario Kart 8 Deluxe just like how I did here for Wii, which is awesome and I could find all elements I wanted (pretty much like Fosfour's code), unlike here in Mario Kart Wii (but I didn't have enough interest and time to look into it all, so instead of fully abandoning it, I'm releasing as how it is). This may or may not be my last MKW code. Thank you for everything.

Credits to JoshuaMK for Kill Lakitu address, 1superchip for Remote Object Freeze address and Vega for POW Check address.

NTSC-U
2834XXXX YYYYZZZZ
04530DBC 4E800020
04589870 2C030001
0458989C 2C030001
0460B39C 4E800020
04678700 4E800020
046898E0 38600000
04701934 4E800020
0471A290 4E800020
04790870 48000010
047960E8 480003A4
04796494 48000038
0479F034 60000000
047C3144 60000000
047C3E04 C025FFB4
047E4CC0 38030000
04816DE0 4E800020
048604E4 4E800020
048A1A04 00000000
CC000000 00000000
04530DBC 9421FFC0
04589870 7C030040
0458989C 7C030040
0460B39C 9421FFE0
04678700 9421FFE0
046898E0 3867FF38
04701934 9421FFC0
0471A290 9421FFE0
04790870 48045801
047960E8 408203A4
04796494 40820018
0479F034 90810054
047C3144 4BFFA475
047C3E04 C0231A00
047E4CC0 38030001
04816DE0 9421FF80
048604E4 9421FFD0
048A1A04 3F800000
E0000000 00000000

PAL
2834XXXX YYYYZZZZ
04535904 4E800020
04590094 2C030001
045900C0 2C030001
0463C7BC 4E800020
0467CB88 4E800020
0468DD68 38600000
047082D8 4E800020
0471E6C0 4E800020
0479987C 48000010
0479F0F4 480003A4
0479F4A0 48000038
047A8040 60000000
047D1BA4 60000000
047D2854 C025FFB4
047EEFD0 38030000
0482A8F4 4E800020
04864914 4E800020
048A6734 00000000
CC000000 00000000
04535904 9421FFC0
04590094 7C030040
045900C0 7C030040
0463C7BC 9421FFE0
0467CB88 9421FFE0
0468DD68 3867FF38
047082D8 9421FFC0
0471E6C0 9421FFE0
0479987C 4800FA35
0479F0F4 408203A4
0479F4A0 40820018
047A8040 90810054
047D1BA4 4BFFA475
047D2854 B01E00FC
047EEFD0 38030001
0482A8F4 9421FF80
04864914 9421FFD0
048A6734 3F800000
E0000000 00000000

NTSC-J
2834XXXX YYYYZZZZ
04535284 4E800020
0458FA14 2C030001
0458FA40 2C030001
0463BE28 4E800020
0467C1F4 4E800020
0468D3D4 38600000
04707944 4E800020
0471DD2C 4E800020
04798EE8 48000010
0479E760 480003A4
0479EB0C 48000038
047A76AC 60000000
047D1210 60000000
047D1EC0 C025FFB4
047EE63C 38030000
04829F60 4E800020
04863F80 4E800020
048A5894 00000000
CC000000 00000000
04535284 9421FFC0
0458FA14 7C030040
0458FA40 7C030040
0463BE28 9421FFE0
0467C1F4 9421FFE0
0468D3D4 3867FF38
04707944 9421FFC0
0471DD2C 9421FFE0
04798EE8 4800FA35
0479E760 408203A4
0479EB0C 40820018
047A76AC 90810054
047D1210 4BFFA475
047D1EC0 B01E00FC
047EE63C 38030001
04829F60 9421FF80
04863F80 9421FFD0
048A5894 3F800000
E0000000 00000000

NTSC-K
2835XXXX YYYYZZZZ
0452395C 4E800020
0457E0EC 2C030001
0457E118 2C030001
0462AAD4 4E800020
0466AF30 4E800020
0467C110 38600000
046F6680 4E800020
0470CA68 4E800020
04787C3C 48000010
0478D4B4 480003A4
0478D860 48000038
04796400 60000000
047BFF64 60000000
047BA480 C025FFB4
047DD390 38030000
04818CB4 4E800020
04852CD4 4E800020
04894B94 00000000
CC000000 00000000
0452395C 9421FFC0
0457E0EC 7C030040
0457E118 7C030040
0462AAD4 9421FFE0
0466AF30 9421FFE0
0467C110 3867FF38
046F6680 9421FFC0
0470CA68 9421FFE0
04787C3C 4800FA35
0478D4B4 408203A4
0478D860 40820018
04796400 90810054
047BFF64 4BFFA475
047BA480 C0231A00
047DD390 38030001
04818CB4 9421FF80
04852CD4 9421FFD0
04894B94 3F800000
E0000000 00000000

XXXX: Controller Address
YYYY: FFFF - ZZZZ
ZZZZ: Button value

Code creator: Ro
Code credits: JoshuaMK (Kill Lakitu address), 1superchip (Remote Object Freeze addresss), Vega (POW Check address)

Print this item

  Remove Voice Delay [Sponge]
Posted by: Sponge - 03-12-2024, 10:48 PM - Forum: Visual & Sound Effects - No Replies

Remove Voice Delay [Sponge]

Removes the delay between character voice lines and removes the limit of how many can play at once. Based on a code by Dea.

This affects both you and opponent characters. To make it only affect you, remove the second line of the code.

PAL
04864ACC 3BE0FFFF
04864ABC 60000000


NTSC-U
0486069C 3BE0FFFF
0486068C 60000000

NTSC-J
04864138 3BE0FFFF
04864128 60000000

NTSC-K
04852E8C 3BE0FFFF
04852E7C 60000000

Print this item

  See Bullet Bills in Online Battle [Sponge]
Posted by: Sponge - 03-12-2024, 10:33 PM - Forum: Online; Item - No Replies

See Bullet Bills in Online Battle [Sponge]

Allows you to see other people using bullet bills in Battle mode during online play. Not useful without some sort of bypass for the item point crash.

PAL
0458D9EC 38800000

NTSC-U
045871C8 38800000

NTSC-J
0458D36C 38800000

NTSC-K
0457BA44 38800000

Print this item