Register - Login
Views: 85649875
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - JCS - Stats - Latest Posts - Color Chart - Smilies
09-22-17 03:07:45 PM

Jul - NO! GO TO STAR! - Super Mario 64 Gameshark code Patcher (STABLE RELEASE) New poll - New thread - Thread closed
Next newer thread | Next older thread
ShenoxVII

(in all seriousness, you're a prick)
Level: 23


Posts: 33/111
EXP: 58938
For next: 8785

Since: 10-09-10


Since last post: 4.0 years
Last activity: 4.0 years

Posted on 12-20-10 11:48:01 AM (last edited by ShenoxVII at 04-02-11 05:10 PM) Link
http://www.mediafire.com/?v2fedn1va0ngksn



New Features

- Supports direct ROM Patching
- New layout
- Fixed "math"

Thanks to, messiaen, metal_man, and Sukasa for their help with the program and to messiaen again for his mario64 GS patching notes.


Here is the Visual Basics Code:


[CODE] Public Class MarioPatcher
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Button2.Enabled = False
Button1.Enabled = False
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox4.Text = "Offset: 0x" + Hex$(CLng("&H" & TextBox2.Text) - &H245000) + Environment.NewLine + "Byte: " + TextBox5.Text + TextBox6.Text + Environment.NewLine + Environment.NewLine + "Ready to be patched!!!"
Label4.Text = Hex$(CLng("&H" & TextBox2.Text) - &H245000)
Button2.Enabled = True
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim patch As Byte() = {(CLng("&H" & TextBox5.text)), (CLng("&H" & Textbox6.text))}
Dim bw As New IO.BinaryWriter(IO.File.Open(OpenFileDialog1.FileName, IO.FileMode.Open, IO.FileAccess.ReadWrite))
bw.BaseStream.Seek(CLng("&H" & Label4.Text), IO.SeekOrigin.Begin)
bw.Write(patch)
bw.Close()
MsgBox("Gameshark code Patched!")
Button3.Enabled = True
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
OpenFileDialog1.FileName = ".z64"
OpenFileDialog1.Title = "Super Mario 64 Rom"
OpenFileDialog1.ShowDialog()
OpenFileDialog1.OpenFile()

Button1.Enabled = True
End Sub

Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click

End Sub

Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label4.Click

End Sub
End Class [/CODE]




If anyone wants to update it. I don't think I will be working on this anymore.
Lyskar
12210
-The Chaos within trumps the Chaos without-
Level: 182


Posts: 7433/12211
EXP: 82458227
For next: 446408

Since: 07-03-07
From: 52-2-88-7

Since last post: 2.0 years
Last activity: 2.0 years

Posted on 12-20-10 04:53:41 PM Link
Fixed the double post so people would only visit the working link.
RDX

Level: 30


Posts: 137/198
EXP: 156179
For next: 9690

Since: 02-14-09


Since last post: 6.0 years
Last activity: 5.0 years

Posted on 12-20-10 08:41:11 PM Link
Mario hacking just became a whole lot easier. Thanks dude
VL-Tone
Member
Super Mario 64 forum moderator
Level: 50


Posts: 584/621
EXP: 942563
For next: 4754

Since: 07-27-07
From: Montreal, Canada

Since last post: 24 days
Last activity: 23 days

Posted on 12-22-10 11:23:15 PM Link
Nice to see someone doing some low level hacking and publishing tools

This program will surely be very useful!

If I understand correctly this can work because the main game engine code is always loaded at the same address in RAM and that most Gameshark codes patch this area?
messiaen
Catgirl
Level: 64


Posts: 936/1085
EXP: 2142567
For next: 71530

Since: 11-20-07


Since last post: 3.0 years
Last activity: 2.0 years

Posted on 12-23-10 02:30:58 PM Link
Yes, all game code is static, there isn't any kind of overlay such as in the Zelda-type filesystem.

But the cool thing would be to write a Gameshark interpreter so that all code types could be patched, including the ones that check for input or compare values .
MarIO0
Member
Level: 15


Posts: 20/43
EXP: 15291
For next: 1093

Since: 09-03-09


Since last post: 4.0 years
Last activity: 4.0 years

Posted on 12-23-10 05:19:43 PM (last edited by MarIO0 at 12-23-10 05:20 PM) Link
Originally posted by messiaen
Yes, all game code is static, there isn't any kind of overlay such as in the Zelda-type filesystem.

But the cool thing would be to write a Gameshark interpreter so that all code types could be patched, including the ones that check for input or compare values .


That would be pretty simple, because each GS code has more-or-less a direct translation to MIPS assembler. It's just a matter of converting the GS codes to MIPS assembler, finding an empty area in the ROM to put them, and adding a call to that area in the game main loop. It requires some MIPS assembler knowledge. < /hint >
VL-Tone
Member
Super Mario 64 forum moderator
Level: 50


Posts: 585/621
EXP: 942563
For next: 4754

Since: 07-27-07
From: Montreal, Canada

Since last post: 24 days
Last activity: 23 days

Posted on 12-24-10 06:06:07 PM Link
Originally posted by messiaen
Yes, all game code is static, there isn't any kind of overlay such as in the Zelda-type filesystem.

But the cool thing would be to write a Gameshark interpreter so that all code types could be patched, including the ones that check for input or compare values .


Yeah I was thinking about that too. Emulating the GS shouldn't be too hard, and I'm sure you would know how to insert the code into SM64's main event loop. A program similar to ShenoxVII's patcher would take one or multiple GS codes as an input, and would patch the ROM with the GS emulator and codes. What could be very nice too is to be able to set one or more custom button combinations that would act as triggers to specific GS codes entered by the user.

But let's remind everyone that ShenoxVII's patcher is already very useful by itself

ShenoxVII

(in all seriousness, you're a prick)
Level: 23


Posts: 38/111
EXP: 58938
For next: 8785

Since: 10-09-10


Since last post: 4.0 years
Last activity: 4.0 years

Posted on 12-29-10 10:54:19 PM Link
Originally posted by VL-Tone

Yeah I was thinking about that too. Emulating the GS shouldn't be too hard, and I'm sure you would know how to insert the code into SM64's main event loop. A program similar to ShenoxVII's patcher would take one or multiple GS codes as an input, and would patch the ROM with the GS emulator and codes. What could be very nice too is to be able to set one or more custom button combinations that would act as triggers to specific GS codes entered by the user.

But let's remind everyone that ShenoxVII's patcher is already very useful by itself





Thank you, I been so side tracked that I almost forgot about working on this plus I never thought this program would help more then a few people out. But seeing you say that has inspired me to continue my research and continue expanding my project. At first the complexity of understanding how roms work was very confusing, it understand more and more by all the help.



Oh and can you explain this more.

"If the code type was "80", the procedure would be the same, except that you would write only the modified byte
(ie, for 802F8EC7 0020, write 0x20 at offset 0xB3EC7).

Other code ranges:

For codes between 800EB180 - 800F083C (behavior bank modifiers), just add 12EC80 to find the ROM address.
You don't have to recalculate the checksum for these codes."

How do you get 2F8EC7 to B3EC7 ? Also the second one, 12EC80 added to the address is for ram addresses?
M64223
Random nobody
Level: 2


Posts: 1/1
EXP: 40
For next: 6

Since: 02-15-13


Since last post: 4.0 years
Last activity: 4.0 years

Posted on 02-21-13 04:58:14 PM Link
My computer says "This app cannot work on your computer." Is it because I use Windows 8?
Joe
Common spammer
🗿
Level: 103


Posts: 2801/3286
EXP: 11464930
For next: 6476

Since: 08-02-07
From: Pororoca

Since last post: 48 days
Last activity: 1 day

Posted on 02-21-13 06:26:58 PM Link
Originally posted by M64223
My computer says "This app cannot work on your computer."
You probably need to install a .NET runtime. What exactly does the error message say?
aaaaalex
Random nobody
Level: 4


Posts: 3/3
EXP: 228
For next: 51

Since: 06-02-12


Since last post: 4.0 years
Last activity: 4.0 years

Posted on 02-22-13 05:06:48 PM Link
Originally posted by M64223
My computer says "This app cannot work on your computer." Is it because I use Windows 8?


Maybe you have to enable the older versions of .NET Framework...

Go to Control Panel -> Programs and Features -> Turn Windows Features on or off -> Check .NET Framework 3.5 (includes .NET 2.0 and 3.0).

Hope it works!

PD: I'm using Windows 8 too and the program just works.
Cajetan
Member
Level: 20


Posts: 47/86
EXP: 37737
For next: 4702

Since: 08-06-11
From: Binary

Since last post: 2.0 years
Last activity: 333 days

Posted on 04-02-13 04:46:16 AM Link
We need a SM64 GS Code patcher, which allows faster patching. It's really annoying having 300 lines GS code, and patching that one for one. A patcher, which could patch all lines at once, that would be great.
ShenoxVII

(in all seriousness, you're a prick)
Level: 23


Posts: 105/111
EXP: 58938
For next: 8785

Since: 10-09-10


Since last post: 4.0 years
Last activity: 4.0 years

Posted on 04-02-13 10:13:02 AM Link
Originally posted by Cajetan
We need a SM64 GS Code patcher, which allows faster patching. It's really annoying having 300 lines GS code, and patching that one for one. A patcher, which could patch all lines at once, that would be great.



Well first off that's very simple lol, You just need to have a Listbox and have the codes listed so you can gather the information needed to patch the rom from each new line. And the method of this isn't even right, It's half right. I threw this project together for someone else to make right.

Good luck bruh
Next newer thread | Next older thread
Jul - NO! GO TO STAR! - Super Mario 64 Gameshark code Patcher (STABLE RELEASE) New poll - New thread - Thread closed




Rusted Logic

Acmlmboard - commit 2f1bc75 [2017-08-27]
©2000-2017 Acmlm, Xkeeper, Inuyasha, et al.

32 database queries, 1 query cache hits.
Query execution time: 0.124055 seconds
Script execution time: 0.011464 seconds
Total render time: 0.135519 seconds