Register - Login
Views: 87371011
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - JCS - Stats - Latest Posts - Color Chart - Smilies
11-20-17 09:47:37 AM

Jul - SM64 Hacking - Alternate ROM Extender New poll - New thread - New reply
Next newer thread | Next older thread
shyguyhex

Level: 14


Posts: 34/45
EXP: 11361
For next: 1710

Since: 01-03-14


Since last post: 2.0 years
Last activity: 1.0 years

Posted on 10-01-14 10:50:20 PM (last edited by shyguyhex at 10-05-14 06:46:43 PM) Link | Quote
(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.
Joe
Common spammer
🗿
Level: 104


Posts: 3161/3289
EXP: 11571417
For next: 290709

Since: 08-02-07
From: Pororoca

Since last post: 7 days
Last activity: 17 hours

Posted on 10-03-14 04:20:58 PM Link | Quote
Originally posted by shyguyhex
+ Removes the main CRC check

Changing the IPL3 code will render the game unbootable on some flashcarts, since it will fail the IPL2 checksum.

Other than that, good work. It'll be nice to see SM64 hacks on a real console.
shyguyhex

Level: 14


Posts: 35/45
EXP: 11361
For next: 1710

Since: 01-03-14


Since last post: 2.0 years
Last activity: 1.0 years

Posted on 10-03-14 07:44:28 PM Link | Quote
I figured messing with the bootcode might cause problems. I'll make the CRC nop optional in the next update.
BMF54123

Rhea Snaketail
Slightly frazzled...
Level: 133


Posts: 5647/5797
EXP: 27183822
For next: 668845

Since: 07-03-07
From: Neither here nor there.

Since last post: 30 days
Last activity: 7 hours

Posted on 10-03-14 11:11:34 PM Link | Quote
Why did it take so long for this to be a thing?

(nice job)
shyguyhex

Level: 14


Posts: 36/45
EXP: 11361
For next: 1710

Since: 01-03-14


Since last post: 2.0 years
Last activity: 1.0 years

Posted on 10-05-14 06:47:13 PM Link | Quote
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
Lyskar
12210
-The Chaos within trumps the Chaos without-
Level: 183


Posts: 12190/12211
EXP: 83105086
For next: 1396017

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

Since last post: 2.0 years
Last activity: 2.0 years

Posted on 10-05-14 11:22:59 PM Link | Quote
I wonder if it would make more sense to stop advertising the old extender and just direct everyone to this one instead.

Since we should really try to get everyone using the best tools rather than clinging to old stuff that breaks everything. X_X
hennahacker

Level: 25


Posts: 123/132
EXP: 80685
For next: 8935

Since: 02-19-10
From: The Endless Cabal

Since last post: 1.0 years
Last activity: 1.0 years

Posted on 10-08-14 02:33:06 AM Link | Quote
I'm not having any luck with this extender. The game runs fine in Nemu, though that means very little since Nemu runs most everything. PJ64 runs the game up until a new file is selected, at which point the ROM/program crashes. It won't run at all on hardware, this is both before and after running rn64crc.
shyguyhex

Level: 14


Posts: 37/45
EXP: 11361
For next: 1710

Since: 01-03-14


Since last post: 2.0 years
Last activity: 1.0 years

Posted on 10-08-14 10:41:09 PM Link | Quote
On PJ64, it should run alright in interpreter mode. I'm trying to find the reason for this right now.
hennahacker

Level: 25


Posts: 124/132
EXP: 80685
For next: 8935

Since: 02-19-10
From: The Endless Cabal

Since last post: 1.0 years
Last activity: 1.0 years

Posted on 10-09-14 01:26:55 AM Link | Quote
Yeah, it's running in Interpreter mode on 1.6, but 2.1 doesn't like it at all. And running it in interpreter it runs quite slowly, at least half usual speed. Anyway, I'll await your findings and test any future releases If an extender that works on hardware can be implemented, that would be fantastic. Perhaps also implement a CRC recalculation if the check is kept, even if you just bundle rn64crc and call it from your program.
hennahacker

Level: 25


Posts: 126/132
EXP: 80685
For next: 8935

Since: 02-19-10
From: The Endless Cabal

Since last post: 1.0 years
Last activity: 1.0 years

Posted on 11-07-14 10:02:33 PM Link | Quote
Any progress on debugging this? I had a thought that the issue could be related to either the changes you've made to the EEPROM checksums and size limit or the 0x1A DMA loader.
shyguyhex

Level: 14


Posts: 43/45
EXP: 11361
For next: 1710

Since: 01-03-14


Since last post: 2.0 years
Last activity: 1.0 years

Posted on 01-24-15 02:37:50 PM (last edited by shyguyhex at 01-24-15 02:42:35 PM) Link | Quote
Sorry for not giving any updates in a while;

Yes the edited 0x1A command is at fault, which is odd because the command executes just fine when it's switching levels at the press start screen, but crashes when entering levels during gameplay. This seems to be the case for most emulators that I've tested it on.

This is my code for the new loader:

0x33910:

OR A0 R0 R0
LW A1 0x2C (SP) // source; currently holds rom address
LUI A2 0x801C
ADDIU A2 A2 0x1000 // destination; terrain texture bank const 0x801C1000
LW T0 0x30 (SP)
SUBU A3 T0 A1 // block size; destination end - destination start
JAL 0x803284B0 //(A0 = 0, A1 = src rom address, A2 = dest ram address, A3 = block size); function used for loading game sounds and mario's animations
NOP


Btw I'm doing a full rewrite, this time with my own mio0 decompressor function built in, so the rom extension process finishes immediately now

bin/src of this build here: http://bin.smwcentral.net/u/25323/altextender2015-binsrc.zip
(I haven't bothered adding in all that extra stuff from the Oct5 release yet, this is a build I just whipped up quickly as a test for my function.)
Next newer thread | Next older thread
Jul - SM64 Hacking - Alternate ROM Extender New poll - New thread - New reply




Rusted Logic

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

27 database queries, 2 query cache hits.
Query execution time: 0.154112 seconds
Script execution time: 0.010826 seconds
Total render time: 0.164938 seconds