Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,471,700
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-23-24 01:16 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
Posted on 04-11-15 03:56 PM Link | Quote | ID: 159858


Tektite
Level: 18

Posts: 53/56
EXP: 29560
Next: 337

Since: 09-08-10
From: Wisconsin

Last post: 2932 days
Last view: 883 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
Posted on 04-13-15 01:59 AM Link | Quote | ID: 159881


Level: 28

Posts: 113/137
EXP: 122927
Next: 8411

Since: 03-21-08

Last post: 768 days
Last view: 768 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!

____________________
Peace!Layout by Erik557 & LDA.
Thank you!









Darkkefka
Posted on 04-19-15 06:02 PM Link | Quote | ID: 159941


Red Koopa
Level: 26

Posts: 122/123
EXP: 94142
Next: 8133

Since: 04-09-11

Last post: 3120 days
Last view: 3287 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
Posted on 04-19-15 11:59 PM Link | Quote | ID: 159944


Tektite
Level: 18

Posts: 54/56
EXP: 29560
Next: 337

Since: 09-08-10
From: Wisconsin

Last post: 2932 days
Last view: 883 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
Posted on 05-02-15 07:49 PM Link | Quote | ID: 160041

Newcomer
Level: 3

Posts: 1/1
EXP: 57
Next: 71

Since: 04-28-15

Last post: 3278 days
Last view: 3190 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
Posted on 05-05-15 01:34 AM Link | Quote | ID: 160046


Koopa
Level: 25

Posts: 106/107
EXP: 79285
Next: 10335

Since: 04-06-10
From: On mars

Last post: 3227 days
Last view: 3227 days
Posted by Enigami
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?


I love the idea of a lazy shell with access to expanded space sadly I don't know C# ethier

justin3009
Posted on 05-13-15 10:24 PM Link | Quote | ID: 160084


Tektite
Level: 18

Posts: 55/56
EXP: 29560
Next: 337

Since: 09-08-10
From: Wisconsin

Last post: 2932 days
Last view: 883 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

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.022 seconds. (347KB of memory used)
MySQL - queries: 62, rows: 88/89, time: 0.016 seconds.