| |||
Views: 87,505,770![]() |
![]() ![]() ![]() ![]() |
09-30-23 06:23 PM![]() |
|
Guest: Register | Login |
0 users currently in Super Mario RPG Hacking | 1 guest |
Main - Super Mario RPG Hacking - Super Mario RPG: 6th Character (Daisy) | New thread | New reply |
justin3009 |
| ||
![]() ![]() Tektite Level: 18 Posts: 53/56 EXP: 28942 Next: 955 Since: 09-08-10 From: Wisconsin Last post: 2726 days Last view: 677 days |
(Posted originally on SMWCentral).
What this mini project thing is doing is allowing a 6th fully playable PC into the party, in my friend and I's case, Daisy. Screenshot: ![]() The menu was actually pretty difficult to add her in. I 'technically' have enough room for a 7th PC too but that won't happen until I can figure out all the assets of the 6th PC first. What had to be done: 1. The menu had to have a lot of it's HDMA data shoved around due to adding Daisy. All PC stats seem to be covered by it so Daisy's would end up overwriting into Layer 1's area and screwing everything up. Had to shuffle the boxes data I believe to an area that's used in the item menu and ONLY the item menu, so they overwrite each other as needed. 2. Hand palette had to be moved to a new area as well along with the blinking arrows on various screens due to Daisy's overwriting it. I might see in the future soon if I can make them into Layer 3 bits instead to save another palette. 3. Item data was interesting. The game apparently already had 6 slots for item comparison. Daisy's value being '20'. Thanks to Lazyshell, that made it a quick process as a test to make her use all of Peach's items, which now work fully from what I can see. (Temporary item testing). 4. PC Level tables had to be completely shuffled around to add in Daisy and I had to alter their code just a 'tiny' bit to allow use for 6 PCs. I'm thinking I'll redo this code sometime later to make it easier to dictate areas for each PC stats to make it much easier to mess with. 5. PC Names of course had to be moved as well. There wasn't enough default room for Daisy. 6. Sprite data routines had to heavily be altered to an extent. The main code is the same but how it gathered each sprites Bank was redone completely to allow TOTAL bank usage in any area of the game now. This was one of 'the' biggest problems considering it seems the big graphics routine is actually in an area that no debugger can seemingly trace due to how the game is handled in each emulator. No$SNS seems to be able to view it properly but since I can't really trace log..didn't help me in the long run. I had to manually find it since it used the same bank code as the menu PC sprites, thankfully. 7. All in-game dialogue and spell descriptions has been shoved into the expanded area of the ROM and the bank swapping occurs automatically very quickly when each letter is loaded. There HAVE been a few issues with this and I'm incredibly uncertain if they're fixed at the moment. So far, I 'think' it's okay but that won't be known until a full playthrough of the game is done later. But with this, dialogue now has A LOT more room to be expanded. 8. Adding in Daisy's sprites as well. She literally mimics Peach quite nicely at the moment since they're so similar in graphic style (Going by her classic look). Obviously things will change as this progresses but so far it's working nicely. 9. I had to alter how the game loaded battle sprites and menu sprites as well for Daisy. Daisy's data uses two bytes of code while the game was trying to force only one byte usage which caused a huge number of problems. This has been remedied so now it's a lot easier to allow new sprites into the game, though, room is still very restricted. If possible and if it doesn't effect gameplay at all, I'd prefer to have ALL the enemy graphics compressed to save even more room. I'm thinking this shouldn't be too much of a problem as many games tend to go this route, so we'll have to see on it! 10. Battle sprites were horrifying to do. A lot of the animation code FORCES a certain PC graphic bit so I had to dissect it manually to understand how it worked. I had to use Mario's code as a base.. for some unknown reason. Any other one's animation code would cause her to turn into Bowser regardless of what was going on. With that though, she still runs just like Peach and as far as I can see, all generic animations have been updated to work for her. 11. The Equipment data in RAM had to be shuffled down further. The game's stats for PC's go consecutively and Daisy's would overwrite the Equipments. So Equipment got moved down and now Daisy takes it's place. Everything works fine in battle and in the menu along with collecting/deleting items. No worries there. 12. SRAM, sadly, had to be slightly changed. The current location the saved game is on got moved to a blank byte that was always transferred in there to accommodate for space. With that, this allows possibly even 7 PC values to be stored, although, old saved files are not able to be used unless you update SRAM manually, which is just a simple byte change and then moving the PC values back two, no biggy. 13. Battle PC values had to be moved to a blank byte since the graphic pointers were being used RIGHT behind it and Daisy clearly needed two bytes. That's been remedied and works just fine. 14. All Special attack descriptions and pointers have been moved into the expanded space and are working just fine in Lazy Shell. With that, the first five dummy skills and descriptions are now labeled as: 'Daisy 1: This is Daisy 1! 'Daisy 2: This is Daisy 2! 'Daisy 3: This is Daisy 3! 'Daisy 4: This is Daisy 4! 'Daisy 5: This is Daisy 5! They show up just fine in the menu and battle. I think the first Dummy is used though so I'll probably have to alter things a little, but otherwise she can have her own descriptions now and Special names. ![]() What has to be done: 1. The biggest obvious factor here are animation scripts for items and FP attacks. There is clearly not enough room to add her data in there so I'll PROBABLY have to throw that into another area to compensate. This will probably happen last as it's one of the biggest problems I'll encounter. 2. Full playthrough to scan for bugs. My biggest worry is how the bank swap on text that uses compression (AKA: Mario, I, Booster, etc..) caused a variety of sprite bugs for an unknown reason. Since the sprite code is in an area that cannot be traced due to emulation bug, it makes it near impossible to fix so this has to be watched extremely closely. Right now it seems okay but it could happen again. And if it does, we're in real trouble. 3. Obviously have to do a way to add her into the game! Can't do anything extravagant at the moment since there's not much room to use but maybe in the future a whole new area could be added just to get her as well. 4. Balancing her out and her level up stats. I plan to have her stats start at Level 1 and continue up JUST so we know how exactly strong she will be when she gets added into the party at whatever level. She will NOT be a Peach clone and she will not be a super magic attacking person like Mallow's stats add him up to be. 5. Fully updating Lazy Shell to accommodate for all the changes done into the game. Right now, dialogue works, items work, names work, level up stats work, etc.. The only problems so far is the graphics in Lazy Shell along with the Menus area. I had to nix the old bank code completely in the ROM to allow flexible banking but I'm not sure exactly how Lazy Shell is handling it. As for the menus, I assume it's breaking due to how I altered a couple things in the status menu and such.. not entirely sure though. I'm not a programmer in anything but 65816 ASM so it's incredibly difficult for me to dissect. But that is all for now! This'll be updated as progress goes but it's relatively slow at the moment! |
Yakibomb |
| ||
![]() Level: 28 Posts: 113/137 EXP: 120755 Next: 10583 Since: 03-21-08 Last post: 562 days Last view: 562 days |
This is just fabulous. Are you releasing this patch to the public for testing, or are you going to release it once it's completely finished? If you need for testing on different emulators, I'll gladly help out.
Best of luck to you! ____________________ ![]() Thank you! |
Darkkefka |
| ||
![]() ![]() Red Koopa Level: 26 Posts: 122/123 EXP: 92086 Next: 10189 Since: 04-09-11 Last post: 2914 days Last view: 3082 days |
Wish I knew how to do advance stuff like this. I;m assuming this was done in the hex editor...and it must have been a headache. Which program do you use? I use transhexlion. |
justin3009 |
| ||
![]() ![]() Tektite Level: 18 Posts: 54/56 EXP: 28942 Next: 955 Since: 09-08-10 From: Wisconsin Last post: 2726 days Last view: 677 days |
Translhextion is my go to hex editor or 010 Editor.
What I used was Geiger's SNES9X Debugger so I could trace the code that was needed to be modified and what not. Though, with this game, it's a lot harder than most others because in order to use the expanded space, you have to bank swap. I learned how to do that by doing this project (I had no idea this even existed until then honestly). |
Enigami |
| ||
![]() Newcomer Level: 3 Posts: 1/1 EXP: 55 Next: 73 Since: 04-28-15 Last post: 3072 days Last view: 2984 days |
If you need any help with editing Lazy Shell, I'd love to help.
Last year I was working on a 'Lazy Shell +' that I was trying to add rom expansion to, along with some concepts for making things like adding new enemies or levels less of a hassle. I got rom expansion working, started to recode Lazy Shell to switch where it reads/writes data after expanding the rom, and researched how to bank switch with the SNES. But my forte is C# programming and not 65816 assembly. So when I got to trying to figure out how to trace the code so I could repoint graphics and such to make use of the expanded space, I hit a brick wall. And so it got shelved. Since it sounds like you have the opposite problem (skill in assembly, but not C#), maybe we could work together? |
SMRPG HACKER |
| ||
![]() ![]() Koopa Level: 24 Posts: 106/107 EXP: 77679 Next: 446 Since: 04-06-10 From: On mars Last post: 3021 days Last view: 3021 days |
Posted by Enigami I love the idea of a lazy shell with access to expanded space sadly I don't know C# ethier |
justin3009 |
| ||
![]() ![]() Tektite Level: 18 Posts: 55/56 EXP: 28942 Next: 955 Since: 09-08-10 From: Wisconsin Last post: 2726 days Last view: 677 days |
THAT'S the biggest problem is having graphics load from the accessable new banks. There is no emulator out there that can properly trace the games graphic routine due to how the handle Mario RPG, so it makes it near impossible to actually make it work. I've got the code to allow it to load graphics from any CURRENT bank but anything in the expanded space is moot due to that big flaw. I wish I knew a way around that so then we could fully use the expanded space but it is an ass to work with. |
Main - Super Mario RPG Hacking - Super Mario RPG: 6th Character (Daisy) | New thread | New reply |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 62, rows: 88/89, time: 0.034 seconds. |