News: 11 March 2016 - Forum Rules, Mobile Version
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia

Poll

Which control scheme would you prefer for the weak/strong attacks

B for Weak, forward + B for strong
0 (0%)
B for Weak, A for strong (running only available in towns)
0 (0%)
Forward B for weak, B for strong
0 (0%)
B for weak, Y for strong (X used for own menu and X again to change to other characters menu)
0 (0%)
other (please post your suggestion)
0 (0%)

Total Members Voted: 0

Author Topic: Secret Of Mana Gameplay Improvement Hack  (Read 79946 times)

ChemaROMhacking

  • Jr. Member
  • **
  • Posts: 25
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #100 on: August 07, 2015, 05:21:47 pm »

zhade

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • zhaDe's stuff
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #101 on: August 10, 2015, 04:35:21 pm »
Since there is no stat changes between the easy and hard version, I've made an event when starting a new game that asks for the difficulty setting. That way I wont have to make 2 seperate patches. There are 3 difficulties, easy, normal and hard, normal is the same as easy for now. If you want to load a save-state from an older version and want to play the hard version you will have to use a cheat-code : 7ECF64, 01 = easy, 02 = normal, 03 = hard. Since I used an unused event flag for the difficulty, it is saved with the in-game save. In hard mode enemies hit harder and you have less chance to evade, magic also hurts you more, enemies are more agressive (wait less between each attacks) and the magic recharging time is longer. I also plan to increase the bosses HP , maybe 2X or 1.5X.

I've finally fixed the pureland scrolling bug (I had fixed it before but forgot to save my changes -_-)
CPU characters now teleport to you when off-screen, sometime they are stuck after teleporting and in some places they teleport even if they are still in the screen. Its still better than the bugs it caused when they didnt teleport :P
The status bar is raised 4pixels so that the MP doesnt touch the bottom edge of the screen.
I fixed some stuff with the casting so it should have less bugs.

I still need write some code for the difficulty settings to affect all the stuff it should, but ill probably release a new version tommorow.


I've been trying to figure out how the text is written in the menu so that I can show the equipments stats up, this is actually the hard part about adding stats boost to equipment. From what I have seen the game reads the text from the ROM, stores it somewhere in RAM, transform it into graphics, then transform those graphics again (I think the second time it is to add the black border since it is not present in the ROM). Im able to change the graphics directly and update the textbox but using this method I would not be able to switch back between stats and the name because I can't get the game to reload and show the equipment name unless you select another equipment and I can't store all the gfx data because its 32bytes for each character and I don't have enough free RAM for that... Regrs did you by chance look at how the text is processed ? And about the AI, I thought it would have been a chunk of ASM for each enemy but it seems it has a kind of "language" like the events, do you have a document that I could get my hands on that describes the AI bytes ?

ChemaROMhacking:
since your emulator is based on snes9x I guess the casting crashes should be fixed in the next verision.

Regrs

  • Jr. Member
  • **
  • Posts: 18
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #102 on: August 10, 2015, 07:51:48 pm »
Text is processed as part of the "Text" set of Event OpCodes (50+), don't know much beyond that in terms of font. I have an almost complete list of event codes though.

Bosses have 3 sets of OpCodes actually. One for their Init Headers, one for animation scripts and one for AI Commands.

The problem is that for no real reason there are two sets of AI Controllers for bosses. One is structured and very easy to follow. The other is custom and unique to that boss.

Custom AI bosses are: Tropicallo, Boreal Face, Lime Slime, Dread Slime, Wall Face, Doom's Wall, Jabberwocky, Hydra, and the Mana Beast.

Structured bosses will have a setup header that looks like this (Mantis Ant/Metal Mantis in this example)

Code: [Select]
C2/D080: 111C ;[?]
C2/D082: 0100 ;[7E:E670]
C2/D084: 483D ;Pointer to Boss Init Routine.
C2/D086: 5A3D ;Pointer to Boss Movement Routine
C2/D088: 8C3D ;Pointer to Boss Attack Routine.
C2/D08A: 0000 ;Pointer to Boss Damage Routine.
C2/D08C: 9AD0 ;Default Command Pointer.
C2/D08E: 9CD0 ;Death Command Pointer.
C2/D090: C9D0      ;AI Command Set Pointer.
C2/D092: 0400 ;[7E:E6A7]
C2/D094: 0000 ;[7E:E678]
C2/D096: E8FF   ;[7E:E662]
C2/D098: 0000 ;No Special Death Handler.

Pointer fields aren't required. 0000 is the value to set to not use that section. The only thing of note here is the Special Death Handler section. It should point to a list of pointers that handle what to do when the boss dies. Normally they just die. If something special needs to happen (IE: Mech Rider fleeing, Biting Lizard dying, etc) it's defined there. If a damage animation isn't defined, the death animation will be used.

After that you'll find a list of command scripts for the boss. These control what the boss is actually capable of doing. You can string multiple command sets together. FF is used as an end marker.
Code: [Select]
C2/D09A: 00FF ;Set Animation: Idle.
C2/D09C: 03FF ;Action: Death.
C2/D09E: 00FF ;Set Animation: Idle.
C2/D0A0: 04FF ;Movement: Walk Left.
C2/D0A2: 05FF ;Movement: Walk Right.
C2/D0A4: 06FF ;Movement: Walk Down.
C2/D0A6: 0E0C0FFF ;Movement: Jump Straight Up.
C2/D0AA: 0DFF ;Action: Guard
C2/D0AC: 0E110FFF ;Movement: Jump Up-Left.
C2/D0B0: 0E120FFF ;Movement: Jump Up-Right.
C2/D0B4: 07FF ;Attack: Double Kama Swing.
C2/D0B6: 0AFF ;Attack: Right Kama Swing.
C2/D0B8: 0BFF ;Attack: Left Kama Swing.
C2/D0BA: 0710FF ;Attack: Kama Throw.
C2/D0BD: 08FF ;Cast Spell: 'Gem Missile' On 'Closest Opponent'.
C2/D0BF: 13FF ;Use Skill: 'Acid Breath'.
C2/D0C1: 14FF ;Use Skill: 'Flash Beam'.
C2/D0C3: 15FF ;Use Skill: 'Fire Beam'.
C2/D0C5: 16FF ;Cast Spell: 'Lunar Boost' on 'Self'.
C2/D0C7: 17FF ;Cast Spell: 'Gem Missile' on 'All'.

After that you'll have a list of pointers to the actual commands:
Code: [Select]
C2/D0C9: 09D1 [00: Set Animation: Idle]
C2/D0CB: 11D1 [01: Set Animation: Left Head Turn (Broken)]
C2/D0CD: 19D1 [02: Set Animation: Right Head Turn (Broken)]
C2/D0CF: 21D1 [03: Action: Death]
C2/D0D1: 29D1 [04: Movement: Walk Left]
C2/D0D3: 31D1 [05: Movement: Walk Right]
C2/D0D5: 39D1 [06: Movement: Walk Down]
C2/D0D7: 40D1 [07: Attack: Double Kama Swing]
C2/D0D9: 48D1 [08: Cast Spell: 'Gem Missile' On 'Closest Opponent'
C2/D0DB: 52D1 [09: Movement: Walk Up]
C2/D0DD: 59D1 [0A: Attack: Right Kama Swing]
C2/D0DF: 5AD1 [0B: Attack: Left Kama Swing]
C2/D0E1: 61D1 [0C: Movement: Jump Up]
C2/D0E3: 74D1 [0D: Set Animation: Guard]
C2/D0E5: 7BD1 [0E: Set Animation: Pre-Jump]
C2/D0E7: 7FD1 [0F: Set Animation: Post-Jump]
C2/D0E9: 8DD1 [10: Attack: Kama Throw]
C2/D0EB: 97D1 [11: Movement: Jump Up-Left]
C2/D0ED: AAD1 [12: Movement: Jump Up-Right]
C2/D0EF: CBD1 [13: Use Skill: 'Acid Breath']
C2/D0F1: D9D1 [14: Use Skill: 'Flash Beam']
C2/D0F3: E7D1 [15: Use Skill: 'Fire Beam']
C2/D0F5: F5D1 [16: Cast Spell: 'Lunar Boost' On 'Self']
C2/D0F7: FFD1 [17: Cast Spell: 'Gem Missile' On 'All']
C2/D0F9: 09D2 [18: Dummied]
C2/D0FB: 09D2 [19: Dummied]
C2/D0FD: 09D2 [1A: Dummied]
C2/D0FF: 09D2 [1B: Dummied]
C2/D101: 09D2 [1C: Dummied]
C2/D103: 09D2 [1D: Dummied]
C2/D105: 09D2 [1E: Dummied]
C2/D107: 09D2 [1F: Dummied]

Finally after that you'll have the code for the commands themselves (I'm not going to list all of them)
Code: [Select]
[00: Set Animation: Idle]
C2/D109: 0A ;Clear Horizontal Flip
C2/D10A: 00 0A00 ;Play Animation 0x000A.
C2/D10D: 05 0C00 ;Freeze Animation for 0x000C Ticks.
C2/D110: FF ;End Command Subset.

[01: Set Animation: Left Head Turn (Broken)]
C2/D111: 06 ;Set Horizontal Flip.
C2/D112: 00 0B00 ;Play Animation 0x000B.
C2/D115: 05 0900 ;Freeze Animation for 0x0009 Ticks.
C2/D118: FF ;End Command Subset.

[02: Set Animation: Right Head Turn (Broken)]
C2/D119: 0A ;Clear Horizontal Flip.
C2/D11A: 00 0B00 ;Play Animation 0x000B.
C2/D11D: 05 0900 ;Freeze Animation for 0x0009 Ticks.
C2/D120: FF ;End Command Subset.

....

I sadly don't have a complete list of Boss codes anymore, a couple are unused and some are only used rarely, but here's the ones I do have:
Code: [Select]
00 {XXXX}              :: Plays a boss animation with an Id of XXXX. There are a total of x17B animations. This includes things like boss skills and set pieces like the crystals in the slime fights and the platform you stand on while fighting the Mana Beast.
05 {XXXX}              :: Holds the boss in the current animation for XXXX ticks.
06                           :: Sets Horizontal Flip.
07                           :: Sets Vertical Flip
08                           :: Toggles Horizontal Flip
09                           :: Toggles Vertical Flip
0A                           :: Clears Horizontal Flip
0B                           :: Clears Vertical Flip
0E {XX} {YY}          :: Casts a spell with an Id of {XX} with a targetting parameter of {YY}. Valid values for {YY} are:
--0x00: Target Closest Opponent
--0x01: Target All Opponents
--0x02: Target Self
--0x03: Target All Allies
0F {XX} {YY} {ZZ} :: Plays a boss skill animation with an Id of {XX}. {YY} & {ZZ} are the X/Y Coordinates to display the boss portion of the animation if it has one.
--Note that Cave-In, NoName, and Breath Wing are coded as boss skills, but their graphics are loaded as part of the Wall & Dragon graphic sets, making them specific to those bosses.
10 {XXXX}              :: Calls a routine. {XXXX} is the pointer. Routine must be in Bank C2.
11 {XXXX} {YYYY}  :: Updates the bosses character data. {XXXX} is the offset, {YYYY} is the value to be set.
13 {XXXX}              :: Equips a boss weapon. Boss weapons are stored seperately from player/NPC weapons and have a different structure.
15 {XXXX}              :: Jumps to a location in bank C2. The place it jumps to must contain more boss codes.
FF :: Ends the command set.

There's alot more I could say about bosses. Depends on how much you want to know. Its the area I know most about. If you examine their attack routines you'll see them loading pointers from Bank 1C. This is where the AI roulette for each boss is stored.

Other thing of note is that Kettle Kin is not considered a palette swap boss. He has his own AI setup just for him instead of borrowing Kilroy's. This is a leftover from Death Machine's removal during localization. (Note: Death Machine's graphics & sound effects are still in the ROM, his animation scripts and all but 3 of his frames have been removed though).
« Last Edit: August 10, 2015, 09:31:00 pm by Regrs »

Zook

  • Newbie
  • *
  • Posts: 1
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #103 on: August 14, 2015, 12:00:25 pm »
I'm not caught up on the whole thread, so I don't know if this has been requested yet, but pleeeeeease make it so in multiplayer, characters aren't locked to a very short distance from each other. This is the most annoying thing about playing this game with friends.

zhade

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • zhaDe's stuff
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #104 on: August 14, 2015, 04:13:43 pm »
Regrs:
Thx ! there seem to have a lot of stuff to play with, I don't think Ill change alot about bosses in this hack, but maybe ill be able to fix the CPU controlled playable characters AI since it seems to use the same AI opCodes. Im interested in bringing back the chewing attack of the boss (can't remember its name), the boss is not very good so maybe it would help making it a bit harder. Do you have the location of its AI and the codes you used to make it work ?

Zook:
While working on making the AI characters not block the screen I found a bit of code that managed how far characters can be from each other, I tried making it so players could be as far as possible while still being in the screen but it caused problems. The screen scrolling and maximum players distance is kind of seperate. The players start to make the screen scroll when they get close to the edge so if I just increase the max distance even just a bit, players can make the screen scroll even if an ally is at the very edge of the screen, making it possible that players go off screen. Basically the game stops you from moving if an ally is too far so that you can't get close enough to the edge of the screen to make it scroll. I read somewhere that they added the multiplayer feature only late in development, I guess it was the easy/quick way to do it. It would probably be possible to change this so you can keep on moving to the edge of the screen without afecting the screen scrolling. Ill see what I can do, I agree that its annoying, it keeps you from moving at about 1/5 of the screen !


New version !
- Some bug fixes: spell casting / pureland story event scrolling / probably others that I don't remember
- AI now teleport to you when off-screen
- Players can't get hit when recovering from a hit
- Difficulty choice at the start of a new game (the normal difficulty is not functional yet)
- In hard mode enemies now cause more damage
- Characters status bar is raised so that it doesnt touch the edge of the screen
- A bit longer magic recharging time in easy mode to prevent chain-casting when using spells with long effects
- The bow has its range reduced a bit but it now has 99% hit chance.

Download v0.7


EDIT:
I'm not caught up on the whole thread, so I don't know if this has been requested yet, but pleeeeeease make it so in multiplayer, characters aren't locked to a very short distance from each other. This is the most annoying thing about playing this game with friends.
I've been looking into this today and I've been able to make it work ! It only works for left/right for now and still has some problems with wrap-around maps like the moon palace but its probably gonna be in the next version.
« Last Edit: August 15, 2015, 07:17:58 pm by zhade »

Regrs

  • Jr. Member
  • **
  • Posts: 18
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #105 on: August 17, 2015, 01:41:33 pm »
@zhade
Can you share how to control the flight distance of arrows and the boomerang?

About Aegagropilon:
Here's the locations of his scripts:
Init: C2/5150.
Movement: C2/5193.
Attack: C2/51CD.
Damage: C2/526A.

Note that Aegagropilon cheats and uses his movement script to cast Burst 1/3 of the time to up his attack frequency.

Re-enabling his Devour attack is simple if you only want him to use it as originally intended. (That is: Once per form change)

At C2/DA25 you'll find a command code that looks like this: 11 7E00 0000
Change it to this: 11 7E00 0080

That's all you really have to do to allow him to Devour a character once per form change, however you should make some minor AI alterations to make him more likely to use the attack.

At C2/51F5 you'll find a CMP instruction that holds the max distance his target can be from him and still get devoured. Its set at 02. I'd suggest bumping it up to 04 or 05 so he doesn't have to be right on top of you.

At C2/51E7 you'll find this chunk of code:

Code: [Select]
C2/51E7: BDAB00  LDA $00AB,X ;Load [BossDirection]
C2/51EA: C90100  CMP #$0001 ;Test to see if Aegagropilon is facing South.
C2/51ED: D010    BNE $51FF ;Branch and do a normal attack if he isn't.

Just remove that whole thing. Aegagropilon's direction is irrelevant as he only has animations for facing South to begin with.


Of note is that Aegagropilon's Devour works like Biting Lizard/Snap Dragon's devour attack. The swallowed character is granted a free attack vs Aegagropilon.

zhade

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • zhaDe's stuff
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #106 on: August 17, 2015, 03:26:48 pm »
Thx for the Aegagropilon AI stuff !

Projectiles distance :
Code: [Select]
C2/C148: E220    SEP #$20
C2/C14A: BD9BE1  LDA $E19B,X
C2/C14D: 49FF    EOR #$FF
C2/C14F: 38      SEC
C2/C150: 690E    ADC #$0E
C2/C152: 990AD0  STA $D00A,Y

The same code is used for every projectile weapons, the lower the value stored in 7ED00A,Y the faster/farther the projectile will fly
7EE19B,X is the character's current attack charge level.
Y = 0x00 for the boy, 0x40 for the girl and 0x80 the sprite.
There is a 0x40 chunk of RAM for each character with other values related to projectiles close to 7ED00A,Y (not sure where it starts exactly)

There probably is a place where the default speed/distance is set for each projectile weapon since they don't have the same range but I stopped looking after I found this. I just made it jump to a sub that looks if the character's weapon is a bow and reduced the value to be stored at D00A,Y if it is.

Regrs

  • Jr. Member
  • **
  • Posts: 18
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #107 on: August 17, 2015, 05:09:38 pm »
Thanks for the projectile routine.

I looked at it, you shouldn't have to jump anywhere. The default values are hard-coded into that routine. Your charge level + 0E seems to control the better part of the flight distance in D00A, but the other part in D009 is coded just after the snip you posted.

Code: [Select]
C2/C163: A900    LDA #$00 ;Boomerang Distance
C2/C165: 8006    BRA $C16D
C2/C167: A950    LDA #$50 ;Bow Distance
C2/C169: 8002    BRA $C16D
C2/C16B: A930    LDA #$30 ;Javelin Distance
C2/C16D: 9909D0  STA $D009,Y
C2/C170: 60      RTS

Recklessly Impressionable

  • Jr. Member
  • **
  • Posts: 9
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #108 on: August 18, 2015, 12:45:39 am »
Hey zhade i just had to pop in and thank you for this hack, it's super fun. Having the option to use the parry move to evade/block the 1st bosses claw attacks felt awesome This serious makes the game feel very much improved to the point where it excites me to play it again. Love it

I'm not far yet, but i'll report in if i notice anything weird by the time i finish this latest replay.

zhade

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • zhaDe's stuff
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #109 on: August 18, 2015, 05:06:15 am »
@Regrs
D00A seems to affect the angle of the projectile (tho the boomerang doesnt seem to be affected), putting it to 0x00 makes it shoot at 45degrees in the air and puting it to 0xFF makes it go at 45 degrees down which makes it fall right in front of you. It also makes it go farther if the angle is higher because it falls for more time tho if its too high like at 0x00 it falls vertically at the end which looks weird. I didnt know about this before you mentioned it, by using it I managed to make the bow shoot a bit more straight. :thumbsup:

Do you know alot about weapons attacks and animations ? I would like to make the javelin's weak attack a melee attack (kind of like the spear horizontal swing) so that you can hit many enemies up close or shoot it with the strong attack. I thought it would be easy, like fooling the game into thinking you have a spear by changing the weapon type value when you do a weak attack so it does the swing animation but with a javelin as the weapon... But it turns out its not that easy.. It seems every weapon has its own animations. IIRC 7EE018 and 7EE019 (and/or 7EE065 and 7EE066 ??) states which anims to use when attacking but if I use the values of the spear when a javelin is equiped it does other animations (like javelin charged attacks). Even when changing 7EE068 (weapon type) or 7EE1E4 (also weapon type..) or 7EE153 (weapon) or 7EE1E8 (also weapon..) it does nothing. Basically I would need to find a way to "manually" change the weapon so that the game thinks its a spear but keep the javelin sprite...

So yeah... thats kind of specific.. but I thought maybe you know some character data (7EE000-7EE1FF) that have something to do with weapons that might help me with this. Im planning on making a full data map of the characters data, I've got quite a few already but there is alot I still don't know so i've started at 7EE000 going up and im trying to figure out what each byte does to make it complete but its kind of a long process, i've only made it to 7EE01F but discovered some nice/weird stuff already that might be helpful later.

@Recklessly Impressionable
Thx ! :) Hope you will like the other features too. Don't hesitate to tell me if you have ideas of other things I could add/improve too.


Regrs

  • Jr. Member
  • **
  • Posts: 18
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #110 on: August 18, 2015, 09:38:07 am »
@zhade

Character Data:
Code: [Select]
[7EE000] - Master Activator
-00: Inactive
-01: Active
[7EE002/03] - X-Coordinate
[7EE004/05] - Y-Coordinate
[7EE008] - Z-Height
[7EE00E] - Sprite Flags
-00: Default
-01: Horizontal Shake
-02: Vertical Shake
-40: Ghost Flicker
-80: Invisible
[7EE010] - Current Direction
-00: North
-01: South
-02: East
-82: West
[7EE014/15] - Boss Animation Timer
[7EE01A] - Weapon Charge Timer
[7EE01B] - Current Charge Level Redux
[7EE01C] - Action Type
-20: PC Basic Attack
-40: Dodging
-80: AI Attack/Charged Attack
[7EE021/22] - Screen X-Coordinate
[7EE023/24] - Screen Y-Coordinate
[7EE02B] - Boss X-Coordinate (16-bit, so includes E02C]
[7EE02C] - Current Controller
-00: AI Controlled
-01: Player 1
-02: Player 2
-04: Player 3
[7EE02D] - Boss Attack Wait Time
[7EE02E] - Active Animation Loop
[7EE032/33] - Boss Y-Coordinate
[7EE039] - Character Shake Timer
[7EE042] - Boss Attack Pattern
[7EE04A/4B] - Boss Death Script Pointer
[7EE050] X-Distance From Target 01
[7EE051] Y-Distance From Target 01
[7EE053] X-Distance From Target 02
[7EE054] Y-Distance From Target 02
[7EE056] X-Distance From Target 03
[7EE057] Y-Distance From Target 04
[7EE059] - Attacker Id
[7EE05A] - Defender Id
[7EE066] - Boss Z-Coordinate
[7EE068] - Weapon Type Id Redux
[7EE069] - Weapon Palette Id
[7EE076/77] - Boss Command Set Pointer
[7EE07E] - Boss State Flags
[7EE082] - Boss Attacking Flag
-00: Boss Attacking
-01: Boss Not Attacking
-02: Boss Being Attacked
[7EE085] - AI Automatic Charge State
-00: Not Charging
-80: Charging
[7EE098] - Boss Control Flags
-10: Personal Collision
-40: Horizontal Flip
-80: Vertical Flip
[7EE09A/9B] - Boss Animation Id
[7EE09C/9D] - Boss Animation Script Position
[7EE09E/9F] - Boss Animation Delay
[7EE0A0/A1] - Boss Frame Construction Pointer
[7EE0A2] - Boss Frame Construction Bank
[7EE0A9/AA] - Boss Current Target
[7EE0AD] - Boss Attack Timer
[7EE0B0/B1] - Boss Active Command Pointer
[7EE0B4/B5] - Boss Init Routine Pointer
[7EE0B6/B7] - Boss Movement Routine Pointer
[7EE0B8/B9] - Boss Attack Routine Pointer
[7EE0BA/BB] - Boss Damage Routine pointer
[7EE0BC/BD] - Boss Default Animation Pointer
[7EE0BE/BF] - Boss Death Animation Pointer
[7EE0FA] - Weapon Palette Offset
-02: Randi
-0C: Purim
-16: Popoie
-82: Enemy #1
-8C: Enemy #2
-96: Enemy #3
[7EE170] - Cast Spell Id
[7EE171] - Cast Spell Level
[7EE175] - Splash Numbers Activator
-D0: Damage HP
-D8: Restore HP
-E0: Damage MP
-E8: Restore MP
[7EE176] - Cast Spell Target Count
[7EE177] - Cast Spell Element
[7EE178] - Primary Spell Target
[7EE179] - Secondary Spell Target
[7EE17A] - Tertiary Spell target
[7EE17B/7C] - Splash Number Value
[7EE17D/7E/7F] - Experience Til Level
[7EE180] - Sprite Id
[7EE181] - Current Level/Crystal Orb Last Spell Id
[7EE182/83] - Current Hit Points/Treasure Chest Trap Avoided Flag
[7EE184/85] - Max Hit Points/Treasure Chest Trap Disarmed Flag
[7EE186] - Current MP
[7EE187] - Max MP
[7EE188] - Strength
[7EE189] - Agility
[7EE18A] - Constitution
[7EE18B] - Intelligence
[7EE18C] - Wisdom
[7EE18D/8E/8F] - Current Experience(Players)/Exp Per Kill (Enemies)
[7EE190] - Status Effects 01
-01: Stun #1
-02: Stun #2
-04: Tangle
-08: Paralyze (Dummied Out)
-10: Knocked Out
-20: Frosty
-40: Petrify
-80: Confusion
[7EE191] - Status Effects 02
-01: Balloon
-02: Pygmy
-04: Barrel
-08: Transform
-10: Moogle
-20: Poison
-40: Engulf
-80: Ghost
[7EE192] - Monster Type
01: Humanoid
02: Plant/Fish
04: Insect
08: Animal/Bird
10: Slime/Lizard
20: Evil/Dead
40: Ghost
80: Dragon
[7EE193] - Element
[7EE194] - Weapon Effective Against (Dummied Out)
[7EE195] Active Weapon Element
[7EE196] - Active Weapon Critical Rate
[7EE197] - Active Weapon Hit Percentage
[7EE198/99] - Active Weapon Status Effects
[7EE19B] - Current Charge Level
[7EE19C] - Active Weapon Level
[7EE19D] - Saber Spell Uses
[7EE1A0] - Weak Type (Dummied Out)
[7EE1A1] - Weak Element
[7EE1A2] - Strong Type (Dummied Out)
[7EE1A3] - Strong Element
[7EE1A4] - Evasion
[7EE1A5/A6] - Defense
[7EE1A7] - Magic Evasion
[7EE1A8/A9] - Magic Defense
[7EE1AA/AB] - Status Effect Immunity
[7EE1AC] - AI Physical Target
[7EE1AD] - AI Magic Target
[7EE1AE] - Weapon Buffs (Low Nibble - Saber Level, High Nibble - Moon Energy Counter)
[7EE1AF] - Damaged Sound Effect
[7EE1B0] - Buff Effects
-01: Defense Up
-02: Defense Down
-04: Evade Up
-08: Evade Down
-10: Hit Up
-20: Hit Down
-40: Attack Up
-80: Attack Down
[7EE1B1] - Misc Flags
-00: Default
-01: Knocked Out
-02: ???
-04: Partial Remedy Spell
-08: Dead
-10: Lucid Barrier
-40: Wall
-80: Treasure Chest
[7EE1B2] - Status Effect Timer 01 (Stun #2, Tangle, Paralyze, Knocked Out, Frosty, Petrify)
[7EE1B3] - Status Effect Timer 02 (Confusion, Balloon)
[7EE1B4] - Status Effect Timer 03 (Stun #1, Stun #2)
[7EE1B5] - Status Effect Timer 04 (Moogle, Transform)
[7EE1B6] - Status Effect Timer 05 (Poison, Engulf)
[7EE1B7] - Attack Up/Down Timer
[7EE1B8] - Wall Use Counter
[7EE1BA] - Hit Up/Down Timer
[7EE1BB] - Evade Up/Down Timer
[7EE1BC] - Defense Up/Down Timer
[7EE1BD/BE] - Lucid Barrier Hit Points
[7EE1BF] - Lucid Barrier Defense
[7EE1C0] - Glove/Sword Skill Level(Players)/Weapon Level(Enemies)
[7EE1C1] - Axe/Spear Skill Level
[7EE1C2] - Whip/Bow Skill Level
[7EE1C3] - Boomerang/Javelin Skill Level
[7EE1C4] - Gnome/Undine Skill Level(Players)/Magic Level(Enemies)
[7EE1C5] - Salamando/Sylphid Skill Level
[7EE1C6] - Lunda/Dryad Skill Level
[7EE1C7] - Shade/Lumina Skill Level
[7EE1C8] - Gnome Spells Known(Players)/Enemy GP Drop(Low)(Enemies)/Treasure Chest Trap Type
[7EE1C9] - Undine Spells Known(Players)/Enemy GP Drop(High)(Enemies)
[7EE1CA] - Salamando Spells Known(Players)/Death Style(Enemies)/Treasure Chest Dropped Enemy Id
[7EE1CB] - Slyphid Spells Known
[7EE1CC] - Luna Spells Known
[7EE1CD] - Dryad Spells Known
[7EE1CE] - Shade Spells Known(Players)/Treasure Chest Drop Rate(Enemies)
[7EE1CF] - Lumina Spells Known
-These fields control which spells Purim & Popoie know.
-This is how they lock out Mana Magic
-Purim:
--08: Spell 01 Known
--18: Spell 01 & 02 Known
--38: All Spells Known
-Popoie:
--01: Spell 01 Known
--03: Spell 01 & 02 Known
--07: All Spells Known
[7EE1D0] - Current Glove Experience
[7EE1D1] - Current Sword Experience
[7EE1D2] - Current Axe Experience
[7EE1D3] - Current Spear Experience
[7EE1D4] - Current Whip Experience
[7EE1D5] - Current Bow Experience
[7EE1D6] - Current Boomerang Experience
[7EE1D7] - Current Javelin Experience
[7EE1D8] - Current Gnome Experience
[7EE1D9] - Current Undine Experience
[7EE1DA] - Current Salamando Experience
[7EE1DB] - Current Sylphid Experience
[7EE1DC] - Current Luna Experience
[7EE1DD] - Current Dryad Experience
[7EE1DE] - Current Shade Experience
[7EE1DF] - Current Lumina Experience
[7EE1E0] - Equipped Helmet Id
[7EE1E1] - Equipped Armor Id
[7EE1E2] - Equipped Accessory Id
[7EE1E3] - Equipped Weapon Id
[7EE1E4] - Weapon Type Id
[7EE1E5] - Active Animation
[7EE1E6] - Mana Pointer
[7EE1E7] - Character Id
[7EE1E8] - Weapon 01
[7EE1E9] - Weapon 02
[7EE1EC] - Last Attacker Id
[7EE1ED] - Weapon Recovery Timer
[7EE1F0] - Attacker Id
[7EE1F1/F2] - Damage HP Value
[7EE1F3/F4] - Restore HP Value
[7EE1F5] - Damage MP Value
[7EE1F6] - Restore MP Value
[7EE1F7] - Active Weapon Status Effect Infliction Rate
[7EE1FB] - Character Type
-01: Shadow Clone.
-02: Balloon, Barrel, Engulf, Frosty & Petrify.
-04: Character Opening A Chest.
-10: Crystal Orb.
-20: Treasure Chest.
-40: Boss.
-80: Player Character.
[7EE1FD] - Enemy Black Magic Spell Power
[7EE1FE] - Enemy White Magic Spell Power

Still missing quite a few values, but maybe that will help.

Weapon animations are stored in Bank D1. There's a large pointer table starting at D1/3040 that contains them all.

Beyond that I don't know much about how they work. I'll do some digging and see if I can figure out more.


Also, I'd suggest adding something like this to your hack. The all caps thing has always annoyed me. ;D


Edit:
One other thing you can do to improve the bow, boomerang and javelin. They have half the critical hit rate of every other weapon.
Code: [Select]
C0/4A1E: A904            LDA #$04
C0/4A20: DDE4E1          CMP $E1E4,X
C0/4A23: B002            BCS $4A27
C0/4A25: 46A4            LSR $A4
C0/4A27: A5A4            LDA $A4
C0/4A29: 9D96E1          STA $E196,X
C0/4A2C: 60              RTS
« Last Edit: August 18, 2015, 09:47:08 am by Regrs »

vivify93

  • Hero Member
  • *****
  • Posts: 832
  • White Wizard
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #111 on: August 18, 2015, 03:05:42 pm »
Also, I'd suggest adding something like this to your hack. The all caps thing has always annoyed me. ;D
How did you manage to get lowercase letters on the naming screen?! Or is this just a mock up? I've been wanting to add lowercase letters since I made my Proper-casing mod...
All my life I've tried to fight what history has given me.

Regrs

  • Jr. Member
  • **
  • Posts: 18
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #112 on: August 18, 2015, 03:33:53 pm »
How did you manage to get lowercase letters on the naming screen?! Or is this just a mock up? I've been wanting to add lowercase letters since I made my Proper-casing mod...

I modded the naming dialog.

It's a bit of work. You have to alter and move the naming dialog text, change the dialog layout, create button events for up/down movement and alter the closing event to read the new text correctly.

I also fixed a little known bug in the dialog that allows you to duplicate starting equipment.

ze10

  • Jr. Member
  • **
  • Posts: 70
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #113 on: August 18, 2015, 03:43:54 pm »
I've played this hack to the point you get Undine's powers and generally I am really impressed with what you've done with this and I've had a lot of fun playing it. The more dynamic battles make a huge difference. And the fact that you can't parry enemy attacks 90% makes the gameplay different than what I'm used to. :P
The only problem I have so far is with how magic is currently implemented. I didn't like how damaging spells can target allies. I'm not sure in which situation that can add to the gameplay... unless you're fighting an enemy that has wall effect and you have an ally with wall effect as well... but that is a very specific situation and it might not happen very often, considering not many enemies can cast wall, and you can easily destroy wall using dispel.
But if targeting allies with damage spell is something that MUST be implemented, at least make it so that the default target is an enemy, not an ally. I've target myself on accident many times because of that. The fact that picking a target doesn't pause gameplay like the original version only makes it worse.
By the way, that is the second problem I had. It's kinda hard to see which target is currently selected to have magic cast on. And, considering action is happening, it's kinda frustrating to have enemies beat you to death while you're struggling choosing a target for your spell. If the game won't stop for you to pick a target, then there should be a quick and easy way to pick a target.
My third problem lies to the restriction of not being able to multi-target spells. I understand why you did that, because multi-target spells are really OP in the original version. However, I can see this game getting way too hard in later stages where enemies and bosses can easily damage all your characters quickly and you having trouble keeping your characters alive because the lack of multi-target cure and the 5-10 sec delay between spells. You could use items, but since you are limited to 4 of each, you can easily run out of resources. Instead of forbidding multi-target, I'd suggest making it so that if you multi-target a spell, the effect is considerably lower. Like if you use cure on all your allies, you only heal like 1/5 of the amount of HP you'd heal if you only cast it on one ally.
And lastly, I think you should improve how the game deals with the interval after you cast a spell. I noticed the character face flashing at the bottom, but that is a very small sign and I constantly try to cast spells when I can't because I didn't notice that. I'd suggest disabling magic spells, like it happens when you're out of MP or silenced.
Those problems really discouraged me to use magic... I understand that this is a work in progress and you're still working on those things, so I figured I'd give my feedback.
I hope it doesn't sound like I'm a hater and I'm bashing on this. Quite the contrary, this is one of the best hacks I've played and I'm looking forward to the final version! Thanks for your hard work :D

vivify93

  • Hero Member
  • *****
  • Posts: 832
  • White Wizard
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #114 on: August 18, 2015, 06:59:48 pm »
I modded the naming dialog.

It's a bit of work. You have to alter and move the naming dialog text, change the dialog layout, create button events for up/down movement and alter the closing event to read the new text correctly.

I also fixed a little known bug in the dialog that allows you to duplicate starting equipment.
Oh, neat! Sounds like it's way beyond my capabilities though.
All my life I've tried to fight what history has given me.

zhade

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • zhaDe's stuff
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #115 on: August 18, 2015, 10:48:56 pm »
@Regrs
That looks neat ! Im not very good at hacking stuff that includes graphics tho, I ran into alot of problems just to show the MP  :-\. I don't understand why the developers didn't include lower-case letters like this.. the game suports it already, I think it would also be better if the letters where not all on the same line (might not be worth the effort tho), the japanese version must have many lines since there is so much "characters" in japanese , I wonder why they went for a single line with only upper-case letters  :huh: Thx for the character data values, some of them where unknown to me. About the ranged weapon critical rate do you know if there is also this kind of hard-coded modification to the ranged weapons hit-rate ? It seems to me that the javelin doesnt miss much but the hit-rate is the same as all other weapons in the weapons data.

@ze10
The problem with the offensive spells targeting the allies is that there is no way to know when you press R and enter "targeting-mode" if you are gonna cast an offensive or a defensive spell so I had to make all targets available. Since I made alot of testing im now very used to picking target this way and I do it very fast tho I agree that it could be improved. At first I wanted to use the L button for defensive spells and the R button for offensive but then I used L for the parry and im out of free buttons now. The default target is always the boy so if you want to cast an offensive spell, press left so that it targets the first enemy, using this method you can cast very fast on bosses (since there is only 1 enemy target). Also, since allies are always targetable (even if they are dead so you can cast the revifiy spell) one tap right always targets the girl and two targets the sprite, so you can do it pretty quickly. I think I should make it so when you press Right it cylces throught allies only and when you press left it cycles enemies only (or targets none if there is no targetable enemies), even if im used to it sometimes I target my allies with offensive spells when a boss goes out of the screen when quickly pressing R + left + hotkey. It could be possible to make it so when you cast from the menu the target is an enemy by default when using an offensive spell and that you can only target enemies and the same for defensive spells since in that case it is clear which spell you will cast.

About the multi-targeting, personally I didnt need it in my last playtrought, it added some difficulty but was not that bad, but since there is now a hard mode I think it could be a good idea to bring it back, it could work by pressing L when in target mode and depending on if your target is an ally or an enemy it would target all allies or all enemies, and you could press left/right to switch from all allies to all enemies too. I plan on rebalancing the spells so cure for example would heal less so the penality when multi-casting maybe could stay the same or depends on the spell. Multi target would make the saber spells (and other defensive spells) better too, I don't use them much with this hack since it can only work on 1 character and I have to wait for the magic recharging time so I waste a chance to use cure. To be honest, I kind of removed it because I was too lazy to implement it :P

About the target not beign clear, at first the target didnt flash and the only thing that showed the target was the face icon and I got used to it so since now the target flashes I find it clear but like I said I tested it so much that I might not be the best judge about this, maybe I could make it so the target has some palette effects (like when you use a fire spell on them and the sprite have a kind of "burning" effect so that the targets pops up more.

About the characters not beign able to cast not beign clear, I could make it so the spells are greyed in the menu and I plan to make it play an "error" sound when you try to cast with a character that is currently recharging as well as make it stay in target mode because as it is now its not clear why it didnt work and you might try it again before figuring out the character is recharging or doesn't have enough mana. I don't know how I could make it clearer that the characters are currently recharging, using a palette effect would be too much and I can't make a palette effect on the character face only since the face and the character sprite uses the same palette. Using the same effect as when recharging power% could be confusing. I could make it play a sound when a character is done recharging tho (different from when your power% hits 100) so that you don't have to look at the face icon since as it is now you always have to look at the face icon of the sprite when fighting a boss to see if it stops flashing so that you can cast another offensive spell as quickly as possible so you can't stay focused on the character you control.

Im very open to feedback, I want to make this hack as good as possible, so you don't have to feel like a hater. Feel free to post any other sugestions or issues you might find and im glad you like it thus far :)

Regrs

  • Jr. Member
  • **
  • Posts: 18
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #116 on: August 19, 2015, 12:44:18 pm »
@Regrs
That looks neat ! Im not very good at hacking stuff that includes graphics tho, I ran into alot of problems just to show the MP  :-\. I don't understand why the developers didn't include lower-case letters like this.. the game suports it already, I think it would also be better if the letters where not all on the same line (might not be worth the effort tho), the japanese version must have many lines since there is so much "characters" in japanese , I wonder why they went for a single line with only upper-case letters  :huh: Thx for the character data values, some of them where unknown to me. About the ranged weapon critical rate do you know if there is also this kind of hard-coded modification to the ranged weapons hit-rate ? It seems to me that the javelin doesnt miss much but the hit-rate is the same as all other weapons in the weapons data.

You don't have to hack any graphics to modify the naming dialog. Menu text boxes are easy to modify. All you have to do is supply coordinates and height/width and the engine does the rest. Breaking the letter array down into more lines isn't overly difficult either. Biggest thing is to keep the length of every line the same. Otherwise you have to do a lot of extra work to make sure the cursor doesn't scroll outside of the selectable range. Though to really add anymore lines you'd have to remove the help text box (Which doesn't exist in the JP version).

As far as I'm aware hit rate doesn't have any special modifications. Critical hit is the one with a bunch of special handling.

Vanya

  • Hero Member
  • *****
  • Posts: 1154
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #117 on: August 19, 2015, 04:39:37 pm »
For the spell targeting would it not be simplest to have left cycle through enemies, right cycle through allies, up targets all enemies, and down targets all allies?

zhade

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • zhaDe's stuff
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #118 on: August 19, 2015, 08:01:10 pm »
@Vanya
You're right, that would be way more simple.  :P

magictrufflez

  • Sr. Member
  • ****
  • Posts: 488
    • View Profile
Re: Secret Of Mana Gameplay Improvement Hack
« Reply #119 on: August 19, 2015, 10:11:16 pm »
OMG if you could fix the all caps nonsense I would fly to Quebec and hug you myself zhade--I'd also go where ever Regrs is and hug him too

But seriously, I take about a week or so off of keeping up with this thread and you guys have practically reinvented the wheel with this hack.  I'm really looking forward to the finished product--just please make sure FuSoYa's font/text patch is still compatible please!