Go Back   Project64 Forums > General Discussion > Open Discussion

Reply
 
Thread Tools Display Modes
  #11  
Old 25th March 2014, 10:57 PM
retroben's Avatar
retroben retroben is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Jul 2013
Posts: 685
Lightbulb

In two different saves before and after,I noticed the byte at 6D1 in a hex editor changes from 20 to 21 after getting the Super Banjo code in the list.

Edit:I found out some more stuff!

These are the results of a random pointer located address.
N--A--B--N
0C 00 20 00

A-Values:
00=None
01=Jukebox
02=Double Max Feathers
03=Double Max Feathers and Jukebox
04=Double Max Eggs
05=Double Max Eggs and Jukebox
06=Double Max Feathers and Eggs
07=Double Max Feathers and Eggs and Jukebox
08=Fallproof
09=Fallproof and Jukebox
0A=Double Max Feathers and Fallproof
0B=Double Max Feathers and Fallproof and Jukebox
0C=Double Max Eggs and Fallproof
0D=Double Max Eggs Fallproof and Jukebox
0E=Double Max Feathers and Eggs and Fallproof
0F=Double Max Feathers and Eggs and Fallproof and Jukebox
10=Honeyback
11 through 1F=01 through 0F and Honeyback
FF=Cheats one through six available.

B-Values:
20=None
21=Fast Banjo
22=Fast Baddies
23=Fast Banjo and Fast Baddies
24=Honeyking
25=Fast Banjo and Honeyking
26=Fast Baddies and Honeyking
27=Fast Banjo and Fast Baddies and Honeyking

I hope this is extremely useful to you.

Last edited by retroben; 25th March 2014 at 11:31 PM.
Reply With Quote
  #12  
Old 25th March 2014, 11:37 PM
retroben's Avatar
retroben retroben is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Jul 2013
Posts: 685
Default

They stayed after I saved the game.

Now all we need is the Homing cheat and other ones I can't remember.

Edit:Sure enough,my save after that has FF27 in 0x6D0.

Last edited by retroben; 25th March 2014 at 11:40 PM.
Reply With Quote
  #13  
Old 25th March 2014, 11:55 PM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,256
Default

Yes, this was one of the things which I documented near the bottom of the README text, yet did not decide to implement.
Code:
game[0x091] |= 0b00000001; 7. FAST BANJO
Of course, you said 0x6D1, but that's because it's a per-file-slot offset into the EEPROM.

0x6D1 - 256 byte header for global settings = 0x5D1,
0x5D1 - 0x1C0 bytes in one game save slot = 0x411,
0x411 - 0x1C0 = 0x251, 0x251 - 0x1C0 = 0x091

Your notes are similar to mine except I'd finished it on a bit-wise documentation level:
Code:
game[0x08F] |= 0b00010000; /* informed of FEATHERS cheat */
game[0x08F] |= 0b00000100; /* Cheato introduces code chamber podium */
game[0x08F] |= 0b00001000; /* Cheato code chamber instructions */
game[0x08F] |= 0b00100000; /* informed of EGGS cheat */
game[0x08F] |= 0b01000000; /* informed of FALLPROOF cheat */
game[0x08F] |= 0b10000000; /* informed of HONEYBACK cheat */
game[0x090] |= 0b00000001; /* informed of JUKEBOX cheat */
game[0x090] |= 0b00000010; 1. DOUBLE MAXIMUM FEATHERS
game[0x090] |= 0b00000100; 2. DOUBLE MAXIMUM EGGS
game[0x090] |= 0b00001000; 3. NO ENERGY LOSS FROM FALLING
game[0x090] |= 0b00010000; 4. AUTOMATIC ENERGY REGAIN
game[0x090] |= 0b00100000; 5. JOLLY'S JUKEBOX
game[0x090] |= 0b01000000; /* informed of GETJIGGY cheat */
game[0x090] |= 0b10000000; 6. JIGGYWIGGY TEMPLE SIGNPOSTS
game[0x091] |= 0b00000001; 7. FAST BANJO
game[0x091] |= 0b00000010; 8. FAST BADDIES
game[0x091] |= 0b00000100; 9. NO ENERGY OR AIR LOSS
game[0x08A] |= 0b00000100; 10. INFINITE EGGS AND FEATHERS
game[0x08B] |= 0b00001000; 11. OPEN UP ALL WORLD DOORS
game[0x091] |= 0b00100000; 12. ENABLE HOMING EGGS
Main reason I hadn't implemented what you found was because I was using -c to toggle cheat codes on and off, and -C for unlocking the Cinema replay modes, and didn't feel arsed to think of a new letter for making the cheats show up on the official in-game list when you could just use my save editor to toggle the codes on and off anyway. Unless you think I should move the -C option for Cinema replay mode bits to something else and use -C for the in-game cheats list?
Reply With Quote
  #14  
Old 26th March 2014, 12:39 AM
retroben's Avatar
retroben retroben is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Jul 2013
Posts: 685
Default

Is -V taken by something else?

Also,I just found the location for whether or not the cheats are enabled.

0x767=Cheats Enabled

?--A--B--?
00 0C 40 03

A-Values:
0C=None
1C=Double Max Feathers
2C=Double Max Eggs
4C=Fallproof
8C=HoneyBack

B-Values:
40=None
41=Jukebox
42=GetJiggy
44=Fast Banjo
48=Fast Baddies
50=HoneyKing
60=NestKing

0x6CA=NestKing in list

00=None
04=NestKing

Last edited by retroben; 26th March 2014 at 12:47 AM.
Reply With Quote
  #15  
Old 26th March 2014, 01:06 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,256
Default

0x767 is the same thing as game[0x127], which is already where I'm storing the cheat code enable/disable flags specified on the command line when using the -c option (except actually I'm doing 0x128 and 0x129...the fact that you found it stored at 0x127 suggests some endianness issue going on).

Code:
static int set_cheat_codes(int optc, char* optv[])
{
    unsigned long flags;

    if (optc < 2)
        return 1;
    game[0x128] &= ~0x0F;
    game[0x129] &= ~0x3F;
    game[0x08B] &= ~(1 << 04); /* all world doors opened up cheat */
    game[0x136] &= ~(1 << 03); /* homing eggs cheat */
    flags = strtoul(optv[1], NULL, 2);
    game[0x128] |= !!(flags & 1<< 0) << (4 + 0);
    game[0x128] |= !!(flags & 1<< 1) << (4 + 1);
    game[0x128] |= !!(flags & 1<< 2) << (4 + 2);
    game[0x128] |= !!(flags & 1<< 3) << (4 + 3);
    game[0x129] |= !!(flags & 1<< 4) << (0 + 0);
    game[0x129] |= !!(flags & 1<< 5) << (0 + 1);
    game[0x129] |= !!(flags & 1<< 6) << (0 + 2);
    game[0x129] |= !!(flags & 1<< 7) << (0 + 3);
    game[0x129] |= !!(flags & 1<< 8) << (0 + 4);
    game[0x129] |= !!(flags & 1<< 9) << (0 + 5);
    game[0x08B] |= !!(flags & 1<<10) << 4;
    game[0x136] |= !!(flags & 1<<11) << 3;
    return 0;
}
No, -V is currently not taken. Should I change the Cinema un/locked flags option to that?
Reply With Quote
  #16  
Old 26th March 2014, 01:38 AM
retroben's Avatar
retroben retroben is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Jul 2013
Posts: 685
Default

The -V can stand for Videos.

0x776=Homing Modifier

00=None
10=Homing Disabled
18=Homing Enabled

0x74A=Homing Eggs

00=None
40=Homing Eggs

0x6CB=Open All Worlds in list

00=None
08=Open All Worlds

YAY! I found all twelve "in list" cheats!

Last edited by retroben; 26th March 2014 at 01:55 AM.
Reply With Quote
  #17  
Old 26th March 2014, 02:15 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,256
Default

Yes, so did I. That's why it already was implemented.

And your version assumes that the game save file starts at EEPROM + 0x640. If the game wrote it to the other slots (EEPROM + 0x100, EEPROM + 0x2C0, EEPROM + 0x480), then you'd have to adjust all of those fixed offsets you gave. For example, if you create a new save game, or copy your save file into another game and load that, your offsets will all become invalidated by at least 144 bytes.

Anyway, you seem to be having fun with this, so maybe you could help with some stuff I haven't implemented yet, like which bits correspond to which of the 90 jiggies in the game.
Reply With Quote
  #18  
Old 26th March 2014, 02:34 AM
retroben's Avatar
retroben retroben is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Jul 2013
Posts: 685
Default

My offsets are of the actual BANJO TOOIE.eep file when viewed in a hex editor.

The pointed RDRAM address location when playing the game is almost always somewhere in the 0x8019XXXX range.
Reply With Quote
  #19  
Old 26th March 2014, 03:32 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,256
Default

Quote:
Originally Posted by retroben View Post
My offsets are of the actual BANJO TOOIE.eep file when viewed in a hex editor.
Don't tell me as if I don't know. :P
Those offsets are not going to withstand Rareware's backup protection in the save media OR a change in the game file last saved to.

It was obvious what you were doing because you gave offsets in the range of 0x??? in the eeprom.

Rareware specifically designed the EEPROM to throw off hex editors when natively interacting with the game's save updates. You had to have saved in-game an even number of times for the offsets to appear fixed, and even then, your streak of luck won't last forever.

EDIT: Unless you're hex-editing the save file by yourself, but using my EXE to correct the checksum, without making the actual ROM do any saving...that somewhat changes things.
Reply With Quote
  #20  
Old 26th March 2014, 03:43 AM
HatCat's Avatar
HatCat HatCat is offline
Alpha Tester
Project Supporter
Senior Member
 
Join Date: Feb 2007
Location: In my hat.
Posts: 16,256
Default

Okay, guess I need to take some time to explain some stuff.

You're reading EEPROM changes at 0x640, right?
EEPROM[0x640] to EEPROM[0x7FF]?

Well when you save in-game using the ROM, Rareware has you THINK that this is the up-to-date save data, but it's really invalidated and read by the ROM as destroyed, even though all the bits you wrote to the EEPROM are still there.

It actually copied the valid data source and moved it up 1 block, up to EEPROM[0x480] to EEPROM[0x63F], which is really where your save data is getting updated to. Rareware leaves the old, invalidated save data block at the hex bytes you're used to looking at to throw you off. It's a technique of deception, really.

Anyway if that doesn't clear things up for you then never mind, forget about it; have fun.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT. The time now is 11:35 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.