Register - Login
Views: 99796246
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
05-03-22 05:37:49 AM
Jul - Posts by shyguyhex
Pages: 1 2 3
shyguyhex

Level: 16


Posts: 21/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 07-20-14 08:14:44 PM, in Help/Questions about Toad's Tool 64 and SM64 hacking (last edited by shyguyhex at 07-20-14 08:15:03 PM) Link
Originally posted by Luca91
Thank you shyguyhex, you have just resolved many of my questions regarding code executions

I'd also like to ask, if I manually patch those codes with an hex editor on the rom file, do you think that this will works ?

may I also ask if the hook code (812CB26C 0C10 etc) is called every frame ? I think yes, but I'd like to be sure


You could probably patch the gameshark code to a rom patched with a gameshark code interpreter (I haven't used a gs interpreter patch before though so I could be wrong)
Related thread: http://jul.rustedlogic.net/thread.php?id=16157

And the hook code is called every frame; I checked the code and the function starting at 802CB264 is called from Mario's behavior script, so it's constantly running

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 22/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 07-20-14 08:38:54 PM, in Help/Questions about Toad's Tool 64 and SM64 hacking Link

812CB26C 0C10, I was thinking that this code just write 0C at 812CB26C and 10 at 812CB26D.


That wouldn't work :p, GS codes write to RAM addresses, not ROM addresses. RAM and ROM are two very different things so you would need a GS code interpreter. It would basically read the GS codes from a designated bank in the ROM and then write the values into RAM.

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 23/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 07-21-14 07:35:39 PM, in Help with Website Creation Link

I would like to code the website from scratch and am fairly confident in my abilities to learn the coding languages I need to make it.


Honestly, as a person who's done this, I wouldn't really recommend it to someone that hasn't web dev'd before. You would need to be really good at html, css, javascript, sql (or know how to flat-file), and language for preprocessing (PHP is what most people use), also you would probably need to know a bit about HTTP.


I envisioned a forum site with a chat client and subforums dealing with different types of mental disorders, along with a general forum sub site with various topics.


If you decide not to do it from scratch:
Free solution: get MyBB with MyShoutbox
Paid solution: get vBulletin with Inferno Shoutbox

Paid domains: http://www.domain.com/
Free domains and quick hosting/sql setup: http://www.com.nu/ (they kinda suck though, you can't get a top level domain and you have to do hacky things to remove the ads they put on your site)

More semi-decent free hosting: http://www.000webhost.com/

If I were to do good paid hosting, I'd probably go with http://www.hostgator.com/


1. Would you have any suggestions or cautions when looking for a server?
2. I am planning on learning HTML and CSS. Are there other types of code that I would need to gain familiarity with, or specific things to address with these two languages?
3. What is the process and what are the options for soliciting ads on a website?
4. What is the process like of ensuring site compatibility with mobile devices?



1. Don't use some cheap server that looks like it's hosted by an amateur, it's pretty much guaranteed to get hacked

2. If you are really doing it from scratch you should also learn Javascript, PHP, and SQL. Also good security can't be stressed enough. Learn to code defensively to block cross-site scripting, cross site request forgery, sql injection, and file inclusion/injection

3. I think if you use google adsense, it walks you through the whole process, and if you plan on installing a popular board like vBulletin or MyBB, people make plugins that make the process even easier

4. Popular forum software usually comes with mobile compatibility if you select that option. If you were to do it from scratch though, the key here is to make your website check the http parameter "User-agent" for the word "Mobile" and then switch the page's layout accordingly

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 24/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 07-26-14 06:44:22 AM, in Bowser64 - Advanced SM64 Memory Editor (last edited by shyguyhex at 07-28-14 02:56:04 AM) Link



(Click to view full size)
-
Download Bowser64 Alpha 7.26
Changelog
Todo/ideas list
Script language plans
-

Bowser64 is a Super Mario 64 RAM editor designed to work with any emulator. Right now it features a memory editor tailored for object editing, and two all purpose memory editor windows used for data analysis/comparison and pointer tracking. You'll notice from the screenshot above that all of the data is very colorful for easier readability. The red background colors indicate changing data, the green text represents differences between the two memory windows when comparison mode is turned on, the blue text represents pointers, and the various back colors in the object editor are for data-typing and better readability (which is unfinished).

I've also incorporated the "sg64" console that I posted in the ram tools thread which has the following commands:

segments  - show ram segments table

collision - show collision info
inj - inject hex data from cmd line
injf - inject hex file from /injf/
mwarp - make an injf file that moves Mario
clear - clear the console

(I ran an example of the 'injf' command in the screenshot above, where I inject a simple asm hack from the file seen in notepad++)

---------
To get started
Make sure SM64 is running in your emulator and then: File -> Open RAM...

^ You'll then see this window; click your emulator's process and then click "Open process". Bowser64 will then look for the emulator's virtual memory base so it can start hacking. A message box will pop up telling you the address of the virtual memory base it will use, click okay. You can then open the tools from the RAM menu.
--------
Many features still to come; be sure to check out the todo/ideas list for future plans !
I'm open to adding any ideas from the community so be sure to post them

This project is early alpha so you can expect some bugs, but if you do happen to find something that seems like a serious problem, you can let me know here.

(note: right now it takes a little while for it to find the vm base for pj64 and 1964 because that part's not optimized yet, it will find nemu's right away however)

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 25/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 07-28-14 02:39:46 AM, in Bowser64 - Advanced SM64 Memory Editor Link
Sorry for being a bit vague guys. I was in sort of a tired stupor when I made this thread. I've since added a description.

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 26/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 07-30-14 09:30:07 PM, in Bowser64 - Advanced SM64 Memory Editor (last edited by shyguyhex at 07-30-14 09:51:25 PM) Link




I just wanted to say that I got the base of the b64 script interpreter finished!

If anyone wants to test it out: http://bin.smwcentral.net/u/25323/script.exe

The interpreter can work as a standalone provided you feed your emulator's process id and virtual memory base into the command line arguments.


script.exe (mode) (script path) (pid) (vm base)



Example:

script.exe 0 "path/to/script.b64" 3344 10020000


(Mode 0 is ram and 1 is rom, but I haven't added rom patching functionality yet. 10020000 is the static vm base for nemu btw)

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 27/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 08-09-14 04:06:49 PM, in Help/Questions about Toad's Tool 64 and SM64 hacking Link
Hello, got an asm related question.



I'm pretty sure this is the MIO0 decompression function. I noticed that it doesn't use a stack frame, it uses the registers abnormally, and it's surrounded by a few nops. Which makes me wonder, did Nintendo write this in straight asm for efficiency reasons?

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 28/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 09-06-14 02:38:51 AM, in Help/Questions about Toad's Tool 64 and SM64 hacking Link
Questions regarding EEPROM

Tarek (Cajetan) and I are trying to mess around with EEPROM stuff. With Nemu's debugger, I had no trouble extending the file offset limit and disabling checksum protection.

rom+0x3436C = 0x10000003   // bypass eeprom checksum comparisons

rom+0xE3B04 = 0x29E10100 // extend the *u8 eeprom offset limit to 16kbits

With Nemu64, these changes work like a charm; I can make the game save whatever I want to EEPROM+0x7F0 for example.

But I believe Nemu64 makes all EEPROM files 0x800 bytes by default . In PJ64 when you try to start the rom with 16kbit eeprom selected, you're met with a black screen of death.

So we were wondering...
  • Is there an important eeprom size setting/protection somewhere in rom?
  • Would it be possible to replace/extend an eeprom chip on a real cartridge?
  • Why is project64 kill when using the 16kbit setting?


____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 29/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 09-08-14 03:21:43 AM, in RAM tools thread Link
Originally posted by CaptainSwag101
Does this program work with Project64 2.1? If so, can you call it silently from another program, for example, a Windows Forms program? I'm trying to make a modern version of Mario 64 Movie Maker that works with new versions of Windows and Project64, and this could be a good way to call the "camera freeze" and "camera unfreeze" events, etc.


I made a heavily improved version of the injector here http://jul.rustedlogic.net/thread.php?pid=435712#435712

It works with pj64; your frontend would just need to provide a script path, process id, and virtual console memory base address. Unfortunately, virtual console memory is allocated dynamically in pj64. If determining vcm base address of pj64 with your frontend isn't an option (I haven't figured out how to do it myself btw), it might be better to use this app with nemu (10020000) or 1964 (20000000), because both statically allocate their vcm.

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 30/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 09-21-14 03:21:02 PM, in Linking raw file with gcc? (last edited by shyguyhex at 09-21-14 03:51:51 PM) Link
So I have two tables of structs that I would like to add into my project at link time.

I made the object files using objcopy:

objcopy -I binary -O elf32-i386 -B i386 asm_functions.bin objects\asm_functions.bin.o

objcopy -I binary -O elf32-i386 -B i386 asm_operations.bin objects\asm_operations.bin.o


Then I linked them with gcc:

gcc -w res\b64.res objects\asm_functions.bin.o objects\asm_operations.bin.o b64si.c -o b64si.exe



These are the symbols I'm suppose to use, but gcc tells me that they are undefined when I try to use them:

_binary_asm_operations_bin_start

_binary_asm_functions_bin_start


extern const int _binary_asm_operations_bin_start[];

extern const int _binary_asm_functions_bin_start[];


I know that these are the right symbols because I checked the object files with a hex editor; I checked the final exe as well, and my table and the symbols were in there. So I'm confused as to why the symbols aren't defined. Any help would be appreciated.

(win7 32bit)

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 31/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 09-21-14 07:17:58 PM, in Linking raw file with gcc? Link
Managed to find a solution that works.


extern int testdata[] asm("_binary_asm_operations_bin_start")



____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 32/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 09-22-14 01:13:57 AM, in Linking raw file with gcc? (last edited by shyguyhex at 09-22-14 01:24:42 AM) Link
Thanks guys, that works. Now my code is less funky looking .

I find it rather confusing that all the examples I can find about binary linking have people using the leading underscores in their code though


http://balau82.wordpress.com/2012/02/19/linking-a-binary-blob-with-gcc/
http://bytbox.net/blog/2012/11/linking-raw-data.html

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 33/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 09-27-14 04:24:41 AM, in What's your OS(es)? Link
Been using (and loving) Win7 for years and years. If I get bored and wanna play or host Minecraft, I do it on linux mint because it seems to perform a bit better for whatever reason.

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 34/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 10-02-14 01:50:20 AM, in Alternate ROM Extender (last edited by shyguyhex at 10-05-14 09:46:43 PM) Link
(Updated Oct 5 2014)
I've created a new rom extender that should work fine with all of the N64 emulators, as well as real N64 consoles.

What it does:

+ Pads with the rom with 0x01's to 24MB.
+ Decompresses all MIO0 files (with proper alignment) to 0x800000, with 32KB gaps after each file.
+ Remaps all of the pointers to these files in the level scripts (and one asm pointer)
+ Clears old MIO0 data with 0x01's
+ Changes all 0x18 commands to 0x17 commands in the level scripts
+ Modifies the 0x1A command's asm routine to load raw files instead of MIO0 data
+ Replaces the segment 0x02 MIO0 loader with a raw file loader
+ Removes the main CRC check and replaces the CRC string with 0xFF's (optional)
+ Adds 'EXT2' to the image name
+ Resurrects these textures (to segment 0x02):

and puts pointers to them in the correct places in the character table.

What's different in this extender:

+ This extender decompresses all MIO0 files to 16 byte aligned addresses, meaning increased emulator support and support for real N64 consoles
+ With the edited 0x1A command and replaced segment 0x02 loader, none of the decompressed files need 'fake' MIO0 headers

+ This extender brings back 12 textures from the japanese rom (note that this shifts the other ram segments by 0x1800 bytes)


Download: SM64 AltExtender Beta 10-5.exe
Readme: SM64 Altextender Readme Info.txt
To use it, either drag your rom onto the exe or drag your rom into the exe's window and press enter.

Like VL-Tone's extender, this uses BGNG's mio0dec.exe, but I've linked it into AltExtender's exe to make it more portable. mio0dec.exe and and a directory "mio0_temp" are created temporarily while the rom is being decompressed.

____________________

shyguyhex

Level: 16


Posts: 35/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 10-03-14 10:44:28 PM, in Alternate ROM Extender Link
I figured messing with the bootcode might cause problems. I'll make the CRC nop optional in the next update.

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 36/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 10-05-14 09:47:13 PM, in Alternate ROM Extender Link
Update Oct 5

+ Changed the 0x00 padding to 0x01's to make freespace more obvious
+ The old mio0 files are now cleared with 0x01's
+ Added EEPROM size limit removal + EEPROM checksums removal
+ Made the main CRC removal optional
+ Changed the 0x1A command's DMA loader to a better function

____________________

Web R4300i Assembler
Guide to SM64 Behavior Scripts
GS Code Formatter for Nemu's silly Cheats.ini
shyguyhex

Level: 16


Posts: 37/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 10-09-14 01:41:09 AM, in Alternate ROM Extender Link
On PJ64, it should run alright in interpreter mode. I'm trying to find the reason for this right now.

____________________
skype
shyguyhex

Level: 16


Posts: 38/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 10-20-14 04:43:45 AM, in .b64 script interpreter Link
I've made a nice script interpreter utility for injecting blocks of data into ram and rom for any N64 game.
I plan for this to be a backend part of Bowser64 eventually.




Download: b64si 10-19b.zip
A simple batch frontend for Nemu ram injection and the example script from the image above are included in the download.


Command line params:
RAM injection:

b64si "script path" (ram mode - 0) (emulator process id as decimal) (emulator vc base as hex)

Ex: b64si "script.b64" 0 1234 10020000


ROM patch:

b64si "script path" (rom mode - 1) "path to rom"

Ex: b64si "script.b64" 1 "path/to/rom.z64"



Script syntax:

:(8 character ram address) // move ram pointer

!(8 character rom address) // move rom pointer


Data constructs:

hex {(hex pool)} // injects a pool of hex data

asm {(asm code)} // assembles mips asm code and injects
asc "text" // injects ascii
m64 "text" // injects sm64 encoded text
bin "file" // injects a file


(All data from the data constructs will get 32bit alignment, and will move the rom/ram pointers automatically when patching.)

Built in functions:

clr(num size) or clr(num size, num char) // clears an area with 0x00's or with a provided char


(clr does not move the ram/rom pointers automatically.)

Comments:

// line comment

# line comment
; line comment
/* block comment */


Currently supported ASM instructions:

J

JAL
BEQ
BNE
BLEZ
BGTZ
ADDI
ADDIU
SLTI
SLTIU
ANDI
ORI
LUI
LLO
LHI
TRAP
LB
LH
LW
LBU
LHU
SB
SH
SW
SLL
SRL
SRA
SLLV
SRLV
SRAV
JR
MFHI
MTHI
MFLO
MTLO
MULT
MULTU
DIV
DIVU
ADD
ADDU
SUB
SUBU
AND
OR
NOR
SLTU
SLT
ADD.S
ADD.D
SUB.S
SUB.D
LWC1
SWC1
MFC1
MTC1
BC1T
BC1F
BC1FL
BC1TL
C.EQ.S
C.EQ.D
C.LT.S
C.LT.D
MUL.S
MUL.D
DIV.S
DIV.D
NEG.S
NEG.D
LD
SD
LDC1
SDC1
XOR
XORI
BEQL
BNEL
SWR
SDL
SDR
DMULT
DMULTU
DDIV
DDIVU
DSLL32
DSRA32
DSRL32
SQRT.S
SQRT.D
MOV.S
MOV.D
CVT.D.S
CVT.D.W
CVT.S.D


Some additional info:
+ R0..R31 register naming can be used for asm
+ , and ) and ( in an asm block are seen as whitespace, so use them however you want
+ All data outputs are in byte-order ABCD (.z64) format!
+ the m64 string encoder doesn't support symbols yet, and it's a little bugged

____________________
shyguyhex

Level: 16


Posts: 39/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 10-24-14 10:48:56 PM, in Exploring Camera Data Link
Originally posted by CaptainSwag10

2. Even when I find a working pointer to the RAM address I need, when I close the emulator and re-open it, the pointer is no longer pointing to the correct address (I think this is because when I search for pointers, Cheat Engine never finds any static addresses, which are usually colored green and are listed above other addresses. However, I'm not sure what the reason or solution for this is).
3. In order to actually freeze the camera, you need to change the opcode that writes to the camera's position and rotation address, and then restore the original opcode in order to unfreeze the camera again, and I don't know how to modify the address of an opcode in RAM :'(


Sort of getting off the rails here but w/e

2 -> Project64 allocates it's virtual console memory dynamically, meaning the memory placement is basically random. You would have more luck with Nemu64 or 1964, as their memory placements are always the same.
3 -> I think Cheat Engine shows the address of each opcode on the left in the dis-assembly view, just make your trainer set the value at that address to 0x90 (which is NOP in x86, if I recall correctly).

I would recommend learning and editing the MIPS asm code instead of doing x86 asm edits to the emulator's recompiled code. Also you might benefit from learning the Windows API functions ReadProcessMemory and WriteProcessMemory, which let you edit the RAM of other programs any way you want.

____________________
shyguyhex

Level: 16


Posts: 40/45
EXP: 16647
For next: 3609

Since: 01-04-14


Since last post: 6.9 years
Last activity: 6.4 years

Posted on 10-24-14 10:52:25 PM, in Help/Questions about Toad's Tool 64 and SM64 hacking Link
Originally posted by WaryLouka
Very simple question: Can I export Super Mario 64 Levels?
I searched online and there's no answer. There's also no search bar on the forum, or I'm blind.
The level importer currently doesn't have any export to .OBJ function.


You can, using Nemu64's video plugin. It can export levels to VRML files.



@bazinga

It sounds to me like some of the other files are missing from the extender.

____________________
Pages: 1 2 3
Jul - Posts by shyguyhex


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

27 database queries, 29 query cache hits.
Query execution time: 0.080769 seconds
Script execution time: 0.047728 seconds
Total render time: 0.128497 seconds