Register | Login | |||||
Main
| Memberlist
| Active users
| ACS
| Commons
| Calendar
| Online users Ranks | FAQ | Color Chart | Photo album | IRC Chat |
| |
Acmlm's Board - I2 Archive - - Posts by HyperLamer |
User | Post | |||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4942/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
You sure it's not using some form of compression then? Also the " just gives it a 'b' sound, just like how the circle does 'p'. |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4943/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Just been tinkering around a lot with the game. It seems to have some sort of protection or something? No matter what I do to the compressed level files it just goes into an endless loop. Anyway, here's some notes: 347A50 - level 6 textures (probably layout too, didn't check though) 3E76B0 - first file before level 1 data 3FC2B0 - level 1 data (ends @ 405A5E with byte sequence EE E4 FF FF) 405FB0 - first file after l1 2AC0EE - some kind of pointer table? 405CCD - pointer to l1? 7CC700 - free space RAM addys: 07E64E - pointers from 2AC0EE in RAM 0FA45D - in-RAM from 405CCD when in l1 32DDF9 - level # 380608 - reads from 0FA45D loading l1 380574 - reads level number loading l1 ;Disassembled from 380574 ;$at = 8039000C ;$t2 = 00000001 ;$ra = 80380624 lui $t0,8033 lh $t0,DDF8($t0) ;$t0 = level # lui $at,8039 sw $t0,BE24($at) ;level # -> 8039BE30 beq $zero,$zero,3805A0 nop 3805A0: lui $t2,8039 lw $t2,BE28($t2) ;$t2 <- 8039BE29 lui $at,8039 lbu $t3,0001($t2) ;$t3 <- ($t2 + 1) addu $t4,$t2,$t3 ;$t4 = $t2 + $t3 sw $t4,BE28($at); $t4 -> 8039BE34 jr $ra nop At both 2AC0ED and 405CCD in the ROM are the bytes 3F C2 B0, which just happens to be the location in the ROM file of level 1's graphics and level layout data. Changing the pointer at 2AC0ED doesn't seem to do anything? Changing the one at 405CCD crashes the game when you go into level 1 (but not level 2, which uses the same textures and music, so it's not either of those). This means this is probably the pointer we need. I wasn't able to repoint the data however. Moving the compressed file to 7CC700 and updating both pointers still only crashes the game when entering the level (it goes into an endless loop). I also tried decompressing the file, deleting some of the graphics (blanking them out for better compression as my compressor is not quite as efficient as Nintendo's) and re-inserting the (now much smaller) re-compressed file but this still only crashes the game, though with real error messages this time. It really seems as if there is some mechanism in place to prevent this from working, but I have got minor results from just making small random edits to the compressed data right in the ROM, so I'm not sure what to think... Keep in mind that you'll need to fix the ROM's checksum after you edit anything if you want it to actually run. |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4944/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
OK so we're all floating on this big piece of rock in the water. What do we do? Jump on it! ...Yeah, great idea, until your country sinks and causes tidal waves. | ||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4945/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Originally posted by RT-55J OMFG D00D! YOU CAN'T DO THAT! *head explodes* |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4946/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
I always liked the idea of a world that takes place inside various machines. Lots of gears and wires around and all that fun stuff. | ||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4947/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Yeah, ME did that to me too but that's just files with the wrong icons. In this case the extensions are actually being un-registered. I don't see how the gamepad could be broken as it's two different problems and works fine in PJ64. It is a USB pad. I know BMP doesn't support transparency, but many programs fake it by not drawing pixels of a certain colour. XP's title bars do that, for example. As for intl.cpl, if it were broken restoring it from the CD should have fixed it, since it worked before. How is doing that going to screw anything up? |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4948/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
I do have a few ideas which I'm going to try out in a minute. These don't really pan out though. I couldn't find any sign of another pointer, I don't know where any other level's data is (possibly level 6 but I haven't tested it, and doing so would be very tedious on such a large level; pointing it to that just crashed it), and since the level data is compressed any pointers inside it that pointed to itself would have to be relative, which shouldn't be affected by being moved. (Unless they could point to things in RAM? Hmm...) BTW, forgot to mention - the pointer at 2AC0EE seems to be part of a table. It contains a pointer to the first file before level 1's file (3E76B0) and level 1's file itself, but there's also a few between them that don't point to compressed files at all. Changing this doesn't seem to do much anyway, unless it was sound-related. The pointer at 405CCD looks as though it might be in some type of data block, possibly the level header. [edit] Just thought I'd dump my latest notes into here. 405CCD definetely seems to be part of a level header of some sort. 405CEF - change 05 to 06, game crashes when a water bomb appears -change to 04 to really screw up graphics - many objects/Mario missing, textures smear, screen duplicates into a small rectangle and flattens, PJ64 gives continuous exception errors but runs anyway addr: 00 01 02 03|04 05 06 07|08 09 0A 0B|0C 0D 0E 0F 0123456789ABCDEF 405CC0 07 04 00 00|1B 04 00 00|18 0C 00 07|00 3F C2 B0 .............?.. 405CD0 00 40 5A 60|1A 0C 00 09|00 32 D0 70|00 33 4B 30 .@Z`.....2.p.3K0 405CE0 18 0C 00 0A|00 2A C6 B0|00 2B 8F 10|18 0C 00 05 .....*...+...... 405CF0 00 13 4D 20|00 13 B5 D0|17 0C 00 0C|00 13 B5 D0 ..M ............ 405CC0 - 07040000 \ 405CC4 - 1B040000 if changed, game crashes > these could be coords/size? 405CC8 - 180C0007 crash on change / 405CCC - 003FC2B0 pointer to level 1 layout 405CD0 - 00405A60 pointer to 2 bytes past the end of level 1 layout file (no file here O_o) 405CD4 - 1A0C0009 405CD8 - 0032D070 pointer to GFX (bars, wall, etc) 405CDC - 00334B30 pointer to GFX (textures) 405CE0 - 180C000A if changed, PJ64 just kinda stops O_o (tried 1810000A and 1808000A) 405CE4 - 002AC6B0 pointer to GFX (clouds, water) 405CE8 - 002B8F10 pointer to GFX (BGs?) 405CEC - 180C0005 graphic-related (value=1.80946e-024) 405CF0 - 00134D20 pointer to GFX (big weird balls - ones that roll down mountain?) 405CF4 - 0013B5D0 looks like a pointer, but doesn't point to a compressed file 405CF8 - 170C000C 405CFC - 0013B5D0 again note frequent occurrences of 180Cxxxx - 32-bit float, ~1.8 also note pattern: 405CC0 - 07040000 (float) 405CC4 - 1B040000 (float) 405CC8 - 180C0007 (float) <-- pattern starts here 405CCC - 003FC2B0 (pointer) 405CD0 - 00405A60 (pointer) 405CD4 - 1A0C0009 (float) 405CD8 - 0032D070 (pointer) 405CDC - 00334B30 (pointer) 405CE0 - 180C000A (float) 405CE4 - 002AC6B0 (pointer) 405CE8 - 002B8F10 (pointer) 405CEC - 180C0005 (float) 405CF0 - 00134D20 (pointer) 405CF4 - 0013B5D0 (pointer) 405CF8 - 170C000C (float) 405CFC - 0013B5D0 (pointer) The float-pointer-pointer pattern is very interesting. Most of these point to graphics used in level 1. Changing the floats just seems to crash the game, maybe they tell what to do with the graphics? The pointer at 405CD0 is also intruiging as it seems to point right to the end of the compressed file that holds the level layout. Maybe the game needs to know where the file ends? (But why not just specify its size?) This seems likely as AFAIK the game needs to DMA everything from ROM into RAM, and thus should know exactly how much data it needs before doing so. [edit again] W0000000T! I was right! To repoint the level layout, you not only have to change the pointer at 405CCC, but also the one at 405CD0 (it has to point to two bytes past the end of the level file - not sure on this, it might just need to point to the next 32-bit-aligned addy). I now have the game running successfully with the level data moved. Excuse me while I change my pants. [guess what, an edit] Well I can't seem to get anything besides the original level data to work. Even if I just decompress the file, compress it again, and stick it back in, boom. This could mean several things:
I'm not giving up yet though. Mario Kart 64 contains code to compress this stuff... (edited by HyperHacker on 06-12-05 06:27 AM) (edited by HyperHacker on 06-12-05 08:50 AM) (edited by HyperHacker on 06-12-05 09:10 AM) (edited by HyperHacker on 06-12-05 10:45 AM) (edited by HyperHacker on 06-12-05 10:46 AM) |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4949/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Hmm, that makes sense. Wouldn't I have to ensure the lower half of $a1 is zero before I do that though? | ||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4950/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Well that fixed the crashing, now I just need to figure out why it isn't doing anything. | ||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4951/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Yeah, I think I just need to find another place to stick the code. It doesn't seem to be getting executed in some places. [edit] Well I found another place to put the code, tweaked it a bit ($s2 and $s3 aren't used so I don't have to use the stack anymore) and it's once again throwing logic out the window. lui $s2,801C If L and R are pressed, it should be getting the language byte, modifying it, and storing it again. But it's not. If I put an invalid opcode in there, the CPU crashes when I hit the buttons just like it should, but somehow this code is just not doing anything. Also, I can't get the buttons to work right. The way it is now, it activates if L or R are pressed. Removing the 'and' that really doesn't need to be there anyway just disables it entirely. (edited by HyperHacker on 06-12-05 03:34 PM) |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4952/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
If you'd read the post, I managed to move the level file without the game going boom. Actually editing anything, though, kills it. And I am not a geek. | ||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4953/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Originally posted by TanookirbyBehind the cat. |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4954/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Grape juice pwns. Pop is even better, but it's hell on teeth. |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4955/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
At those prices? Hah! | ||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4956/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
Wait wait wait... PHP stands for PHP Hypertext Processor? So that means PHP Hypertext Processor Hypertext Processor, which means PHP Hypertext Processor Hypertext Processor Hypertext Processor, which [...] PHP [ Hypertext Processor x 4375648735], which *stack overflow* |
||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4957/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
You can imagine why I use it as a test pic often. Good way to keep awake. | ||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4958/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
I was considering doing C089($s2) instead of setting $s2's lower half, but since it's above 7FFF I figured that might not work right (like 80110000 - 3F77 or something). Using an unsigned byte for the controller layout, though it seems right, doesn't seem to work. Also yes, for some weird reason the game constantly checks its language setting and switches the text and fonts accordingly. | ||||||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4959/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| |||||
There's Nemu if by some miracle I can get it running, and the Gameshark which doesn't help a whole lot without step-by-step execution. All instructions are 4 bytes. | ||||||
(restricted)
HyperLamer |
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 4961/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours
|
The hard drive could actually be the entire problem. My old computer does similar things with certain defective HDs I have laying around. With one the RAM fails (text on the screen gets jumbled and the OS won't boot), the other won't spin up until I give it a good thwack and until then the BIOS hangs waiting for it. |
|
Acmlm's Board - I2 Archive - - Posts by HyperLamer |