This RTE is going to be a bit different from what most are used to seeing.It does not use XRPC, XDevkit or any of it's similar types of plugins or DLL's and SDK is not required! The only requirements for this to work is to have a Jtag or RGH console with xbdm.xex plugin installed (devkernel and xdk have this built in) here's my example with a single cheat using a checkbox I have also added "freeze" and "unfreeze" commands to show further use of the TCP client The notation should be enough to help most work through this code, feel free to ask questions, and for those of a higher experience level please keep in mind this is a bare bones example to help get people started. UnHidden Content: //For this example we create a form app with 3 buttons, one textbox and a checkbox , and a setting to save our IP using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; namespace TCP_RTE { public partial class Form1 : Form { //our client will be called jtagCon public TcpClient jtagCon; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //(create a string setting called 'IP' in your Properties/Settings.settings page) //when the form loads insert the last saved IP into the text box IP_Box.Text = Properties.Settings.Default.IP; } private void IP_Box_TextChanged(object sender, EventArgs e) { //if IP text is changed, save the user IP setting Properties.Settings.Default.IP = IP_Box.Text; Properties.Settings.Default.Save(); } private void connectBtn_Click(object sender, EventArgs e) { //attempt connection when button is clicked Connect(); } public void Connect() { try { //create a new TPC client object jtagCon = new TcpClient(); //Connect to our console on port 730 jtagCon.Connect(IP_Box.Text, 730); //here we should generally do some extra connection checks, but no need really } catch (Exception) { //if failed user should check network and plugins, then try again or quit application DialogResult dialogResult = MessageBox.Show("Please Check Your xbdm.xex Plugin And Network Connection\n\nTry Again? (Y) or Exit (N)", "FAILED!", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { Connect(); } else if (dialogResult == DialogResult.No) { Application.Exit(); } } //If success , show message that we are connected MessageBox.Show("Xbox 360 Connected And Ready!", "begalbrew RTE"); //make our connect button text show connected and turn green connectBtn.Text = "Connected!"; connectBtn.ForeColor = System.Drawing.Color.Green; } //a quick method to set our memory to a new value using the memory address, and our value as a string public void DoCheat(UInt32 offset, string Value) { string Valuez = Value; jtagCon.Client.Send(Encoding.ASCII.GetBytes(string.Format("SETMEM ADDR={0} DATA={1}\r\n", offset, Valuez))); } private void cheatBox1_CheckedChanged(object sender, EventArgs e) { //if checked call our 'DoCheat' method and insert our offset and our desired value (value must be in string format) if (cheatBox1.Checked) { DoCheat(0x42069420, "3b9ac9ff"); } //else reset to default value, turn off option , etc else { DoCheat(0x42069420, "00000000"); } } //a similar TCP command used to freeze and unfreeze the console private void freezeBtn_Click(object sender, EventArgs e) { jtagCon.Client.Send(Encoding.ASCII.GetBytes("STOP\r\n")); } private void unfreezeBtn_Click(object sender, EventArgs e) { jtagCon.Client.Send(Encoding.ASCII.GetBytes("GO\r\n")); } } }
Perfect for personal projects or to get started, be good to see some of the outcome if people use this
Exactly that, great little starting platform for game RTE's and test tools,, this can be used to make a nice little offset testing tool for trainer devs to save some of that "rebuild,reboot" time. one other thing I would like to point out is that you can make the cheats on any type of "switch" you would like, sometimes I use the slider and just set it's max value to 1 so it only has 0,1 (on/off) , or setting up the "DoCheat" inside a timers tick method will "Poke" the offset with every tick of the timer interval, great for games that like to reset things on you. Lots of possibilities to play with