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

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - zhade

Pages: [1]
1
Hi,
I've been working on some snes debugging tools lately that need to obtain the RAM from an emulator,
the way I obtain the current RAM values (in geiger's snes9x debugger) is by using an AutoHotKey script that, on the press of "CAPSLOCK + Q" quickly clicks on the "show Hex" button , sets the range from 7E0000 to 7FFFFF and press Dump which creates a dump of the whole ram that I then can access from programs that I write..
but thats very slow.. there must be a way to directly read the RAM off of the emulator's memory so that a whole RAM dump is not needed.. right ? I've seen some programs (for example the megamanX editor) which seems to have no problem doing this so heres some questions I have about it all:

- Should it be possible to obtain this kind of data from any emulator, using the same general "technique" ?
- Do some emulators have some built-in mechanisms to "share" their RAM/VRAM etc. values with outside programs, and if so does geiger's snes9x happen to have such a feature  :happy: ?
- Are there other threads about this subject or documents related to "accessing other program's memory" that I could learn from ? I feel as tho there is a common name for this that I am not aware of


Heres why Im asking:
I've made a tool that uses what I call "script sheets" that works with geiger's snes9x debugger.
Its like a notepad with two states, edit and view, that makes it easy (at least if you can cope with the awkward script syntax..) to see everything you need when debuging..
Basically when switching to "view" mode, every text between "[" "]" is interpreted/executed and the result is shown.

For a basic example, in secret of mana, each CPU controlled character have a "AI script current instruction" value,
the value corresponds to the address where the next AI instruction is located starting from D04F15 (meaning a value of 0000 = D04F15 and a value of 0010 = D04F25, 1000 = D05F15).
This can get bothersome because you don't get the full address right away and need to add D04F15 each time,
Lets say you are messing with AI script and often need to know each character's current AI instruction location.. you could use a"script sheet" like this:

Edit / View


the above is just a very basic example tho..between "[" "]" brackets it is possible to call "functions" that can make conditional operations and return a value as well as define "decoders" that deals with "coded data" (stuff that like ASM has instructions with variable byte count depending on the opcode) all of which are defined in the '3rd mode' (that 'A' book button) which looks like:

yea..  I don't assume you can make out what any of this does since it has this... hum.. Unique ! *cough* cough* awkward and unpractical *cough* *cough* syntax and all.. but it gets the job done and I came to like it somehow :P

And heres a more complex sheet I made (for secret of mana) to see randi's sprite/animation information:



2
ROM Hacking Discussion / snes writing to VRAM
« on: July 24, 2015, 10:26:10 am »
Im trying to write some stuff to VRAM to change the gfx show on BG#3 in secret of mana, I have located the VRAM adress of a tile that I want to change and call a bit of code every frame to change it here is the code as it appears in the debugger:
Code: [Select]
$E0/F000 A9 80       LDA #$80                A:0001 X:0000 Y:0000 P:envMXdIZC
$E0/F002 8F 15 21 00 STA $002115[$00:2115]   A:0080 X:0000 Y:0000 P:eNvMXdIzC
$E0/F006 C2 20       REP #$20                A:0080 X:0000 Y:0000 P:eNvMXdIzC
$E0/F008 A9 55 5B    LDA #$5B55              A:0080 X:0000 Y:0000 P:eNvmXdIzC
$E0/F00B 8F 16 21 00 STA $002116[$00:2116]   A:5B55 X:0000 Y:0000 P:envmXdIzC
$E0/F00F E2 20       SEP #$20                A:5B55 X:0000 Y:0000 P:envmXdIzC
$E0/F011 A9 08       LDA #$08                A:5B55 X:0000 Y:0000 P:envMXdIzC
$E0/F013 8F 18 21 00 STA $002118[$00:2118]   A:5B08 X:0000 Y:0000 P:envMXdIzC
$E0/F017 A9 20       LDA #$20                A:5B08 X:0000 Y:0000 P:envMXdIzC
$E0/F019 8F 19 21 00 STA $002119[$00:2119]   A:5B20 X:0000 Y:0000 P:envMXdIzC
$E0/F01D E2 20       SEP #$20                A:5B20 X:0000 Y:0000 P:envMXdIzC
$E0/F01F 6B          RTL                     A:5B20 X:0000 Y:0000 P:envMXdIzC

the problem is that it doesnt always work... It only seem to change it when I transition from an area to the next and only in some areas. If I change the data directly with the debugger the tile changes immediatly as it should but it does not change back with when my routine is executed... What am I doing wrong ?

3
Personal Projects / Secret Of Mana Gameplay Improvement Hack
« on: July 13, 2015, 07:14:39 pm »
hi guys, im working on a hack of secret of mana to fix the common gameplay issues/abuses, add new gameplay elements, an option for the difficulty setting and various other things to hopefully make it more enjoyable and different in terms of gameplay.

heres the list of changes I have done so far:

- AI controlled characters don't get stuck
Actually they still do get stuck, but they don't stop the screen movements and get teleported back to the leading player if they go off-screen.

- MP is shown at all time
Still need some work to make it look better

- Binding magic spells to A,B,X,Y (now for all 3 players)
You can now cast spells without interupting the game. Thx to Piotyr for the idea ! First you have to go in the menu, put the cursor over the spell you want to bind, hold R then press A,B,X or Y to bind the magic the the chosen button. Then when in combat, pressing R will put you in "targeting mode" pressing left or right will make you select a target then pressing A,B,X or Y will make you (or the ally who have the chosen spell) cast the spell on the target, pressing R again will cancel. You can only target 1 character or enemy at a time, I still don't know if I'll make it possible to cast on all as it is kind of OP imo.
V0.3 : it is now possible to cast spells from the menu but you still have to pick your target during the action.

- Magic recharging time
After a character casts a spell he will have to wait some time (about 10seconds) before he can cast again. The face of the character on the botom of the screen will flash to show that it is currently unable to cast. No more chain-casting on bosses ;)

- Strong/Weak attacks (now for all 3 players)
There are now 2 different normal attacks for each weapons, attacking while pressing a direction on the D-pad will trigger the strong attack (a thrust with melee weapons) which is 25% stronger than the weak one but takes 25% more time to recharge. In order to not make the game easier and slower it is the weak attack which actually hits 25% less and recharges 25% faster than in vanilla.

Manual blocking (now for all 3 players)
Pressing the L button now makes your character block, he takes a "blocking stance" during a short time in which he will evade any physical attack. Blocking does not affect the power%, it is hard enough to have the right timing anyway. You can also block while charging but it will pause the charging for a short time.
V0.4: Human controlled characters can now only dodge manually.

- Enhanced bow
The bow now shoots twice as far and the power% starts recharging as soon as the arrow hits something. It also has a 99% hit chance.

- Reduced hit-recovery time
When you hit an enemy he will get up twice as fast as he did normally. This is to give a chance to enemies, normally by the time enemies get up you already have your 100% power back so you can hit them before they have a chance to move. This also works for playable characters preventing you to get stuck in a corner getting hit each time you get up until you die.

- Reduced damage/healing time
The time the players/enemies are immobilized as the damage or healing numbers are shown as been split in 2.

- 3 Difficulty settings
At the start of a new game, the player chooses the difficulty setting (easy, normal or hard). The difficulty setting affects how long the magic recharging time is as well as the enemies attack speed and how much damage the playable characters receive when hit by a physical or magic attack.

kown issues:

- Ghosts of dead characters and normally transparent enemies are not transparent anymore, this is not really a bug, it is there because when you are in "targeting-mode" your target become transparent to make it easier to know who you are targeting when characters/enemies are close to each other. Bosses wont flash when targeted tho.
- The character faces used as a cursor when targeting is always on the bottom of the enemies/characters, when enemies are flying it appears on the bottom of their shadow which looks odd. At least the target will be transparent so it is not confusing to know who you are targeting. The face-cursor will also be off if the target is at the edge of the screen or wanders outside the screen while being targeted.

Here is the latest Beta patch : V.10

It should be applied on an hearderless US rom, patching tool included in the zip.

here are some things I plan to add:

- Change the bosses HP at higher difficulty settings
- Reseting charge level to 0 if another character switch weapon with a charging character
(to fix the abuse where you can use charges over your current weapon lvl)
- Make weapons special effects less abusive
Some weapons have special status effect like balloon which are way OP, I would like to make it so the effect has a 20-25% chance to work instead of working all the time.
- Make stats boost spells last longer
- Make the charged attacks charge faster depending on weapon level
- Give a default level to spirits
Undine 0, Gnome 0, sylph 1, salamander 1, shade 2, lumina 2, luna 3, dryad 4
- Charge-locking
Pressing R while charging will stop the charge at the current level to give you time to position yourself
- Elemental weapons only work at random
element effects like snowman will have a 20-25% chance to work while still doing elemental damage all the time.
- Reduce the amount of HP healed by the luna elemental weapon
15-20% of the damage dealt would still be pretty powerful
- Make treasure chest give you another item if you are already full (healing items only)
For example, if a treasure chest would give you a chocolate bar but you already have 4 and have only 3 candies it would give you a candy instead. It will never give you a better item than what it would have given you in the first place. The only items that it could give you are candies, chocolate bar and honey.
- Equipment give stats boost
Equipement could boost some stats to give some stats customization options.

here are some ideas im still unsure about:

- Stat boost depending on weapon
For example the axe (which is just a sword with bad range) could raise the defense when equiped, the gloves could raise the evasion. The javeline could have a higher hit-rate (maybe even always 100%) to make it better compared to the new bow.
- Character dependent fighting skills
For example the girl could block/evade for a longer time (or maybe she could even do a counter-attack after a sucessful block?), the sprite could have an even faster weak attack. And other stuff like this that would give each character a bit of a different play style to make it more interesting.

Tell me if you have ideas of what I could add to make this great game better !

4
ROM Hacking Discussion / Secret Of Mana Binding magic to buttons
« on: July 03, 2015, 05:12:54 pm »
Hi, Im working on a hack of SoM (an idea by Piotyr) to make it so you can bind magic spells to buttons so you don't have to bring the menu each time you want to cast a spell.

I want to bypass the spell targetting too so that the game flow is uninterupted, so to bind magic spells you would go into the menu, select the spell you want then press R+(A,B,X or Y) to bind the spell, then when in combat you would press R+(The button you chose) and the spell would be cast instantly. Tho Since I want to bypass the targetting I think I would make it so it targets the closest enemy and if you press L+(The button) it would target all ennemies instead.
I think that would be ok for offensive spells but for cure for example R would cast on you and L on all and sometimes you want to only heal 1 (other) character so I think I would need other way to do this.. maybe hold both L+R to cast on all instead ? R to cast on self, L to cast on closest party member?

I would also like to bypass the "spirit appearing animation" so that the spell is cast faster and bring the % to 0 and make it so you can't cast until 100&

I could also give spells to the boy (he has an unused spell-casting animation, and can cast with no problem if he has spells)

for now I can cast spell when pressing R, the binding and target auto-selection is not done yet but I think that would not be so hard, skipping the animation might be tho

I would like to know your sugestions for the controls/targetting or any other thing I could add to make the magic system better !

5
Personal Projects / Secret Of Mana no-magic hack
« on: June 26, 2015, 01:33:37 am »
First beta version is ready !
This version is fully playable from beginning to end,
the only thing that makes it a beta is :
some cut-scenes (the ending of pure-land and the mana-fortress) still need editing.
there might be other events that I missed.
there might be bugs that I missed.

Let me know if you find any bug or have any suggestions
If you try it with another patch id like to know if it works or doesnt

Playing with only the boy in the party should only be attempted by people who don't mind grinding alot, you are warned !

SoM No Magic + Party Selection v0.2:
The  patch should be applied to a headerless US rom
I included a patching tool which can remove the header if your rom has one

SoM No Magic + Party Selection v0.2

v0.2 - fix sprite clipping bug

-------------------------------------------

Hi !

Im working on a hack of SoM to make remove all magic so that the combat is not always interrupted and to make it more of a challenge

Basically, you can't use magic at all

I also made it so when you start a new game you select your allies, you can choose to play with only the boy, boy and girl or all 3
You start with your allies in your party and all story events refering to the girl and the sprite are (will be) gone
You also start with the bow, the gloves and the boomerang (which are normally obtained when the girl and the sprite join)



I had to change some events like the desert ship where you normally lose your party members and have to get them back



Or when Thanatos captures the Girl, she normally is laying down in front of Thanatos before rejoining with the group before the boss now she try to attack Thanatos with the others



Normally, some paths are blocked until you cast a spell on a gem, now when you obtain the spirit which would give you the needed spell, the path is automatically opened.

I might do a version in which enemies can't use spells later, because playing with only the boy is almost impossible.

6
I was messing with zsnes cheats and found the address where the game stores which characters you selected at the start of the game:

7E2FF0 - First
7E2FF1 - Second
7E2FF2 - Third

00 = Duran
01 = Kevin
02 = Hawk
etc..

The funny thing is, you can set 2 or all 3 to the same character, but when you encounter a character which is already in your party, instead of "Duran joined the party" you get "Already in your party" and the character just disapears...

I guess Im not the first person to notice that and I wonder if any of you guys know if it breaks the game at some point ? If I remember correctly, normally you have some special events depending on your characters and there is the part in the ghost ship where one of the characters is removed from the party.. Im interested in playing the game with only one character for the challenge but I fear that at some points I will no longer be able to progress due to messed events.

7
Hi guys, I was messing with the savefile (zsnes .srm file) for secret of mana and I found a way to make it so you start (by loading the game) at the first village but with some events already done so that you never encounter one or both of the other characters. In order to not get the sprite in your party, the boss in the dwarf village is skipped (I can make you start with the boomerang, the bow and the orb that you usually obtain after the battle tho). For the girl, she just won't be attacked by the wolfs once you enter the forest and you start with the gloves. For now I didn't find the value for the event where you get attacked by goblins so in theory it is still possible to get the girl that way but it should not be a problem to find the event data.

I tried playing with only the boy (to make it challenging) but it is nearly impossible, I made it until the boss in the cave in the dwarf village. The boss magics can hit 180 damage while I have only 157 max hp.. and with only 1 character there is no way to revive...

I tried changing the stats of the boy (directly in the rom this time) but I had to make the magic defense stat almost to the max to survive one "exploder lvl4" or double the max hp which I guess would make it top to 999 pretty fast. I then thought I should change the boss stats instead but that would mean change all boss stats and alot of work... I also found it was pretty anoying to be the only target of magics during the wall-with-eyes boss, I kept being stopped every 2seconds and I guess some bosses later would make that even worse.

btw it is funny how normally the sprite needs to stay alive or else you can't fight this boss.. but if he isn't in your party he is considered "not dead" so the event goes like normal but with the sprite being invisible and being named "gogogogogogogogogogogogo" which is way more characters then normally possible so it screws up the text...
I can rename characters directly in the file tho and the same happens with all the other events at least for what I tested, I thought the game would crash or something but it doesn't seem to bother at all.

I am now testing a game with the boy and the girl only, alot easier, but at least I can't abuse the bosses with attack magic.

anyway, I would like to know if anyone would be interested in playing this, I know there is already a difficulty hack for the game, but this is a different kind of challenge.

I still need to work on it before it is fully playable because of all the crystals in the game blocking the path unless you use a certain magic on them, which you might not be able to have if the character is missing from your party. I need to find the event value and make the path open by default for every one of them.

Pages: [1]