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.

Messages - lory1990

Pages: 1 [2] 3
OK, last-for-now post about a few other stuff which I think are relevant. Again if you vivify93 or someone else has some questions, feel free to ask and I'll see if I can answer.

- dexterity bug

  Dexterity affects the chances of hitting an enemy. The dexterity value is first multiplied by 256 and then divided by the enemy's agility. According to certain values and
  checks, there will be 1 of 3 possible values saved in a variable. Then this value is compared to a random number and if that value is higher or equal than the random
  number, you hit the enemy. The problem is the dexterity number after being multiplied by 256 is truncated and only the lower two bytes are taken into account. This
  means that the value rolls back to 0 every 256 bytes. So after 255, it goes back to 0, and so does it after 511 and so on. Very simple fix: just include the whole
  number in the calculation.

- Palette swapped Central Tower portraits

  There are two unused palettes for the Central Tower portrait. Here are three screenshots, first one being the used portrait for a comparison:


vivify93, if you want to include the dexterity fix, you'll have to re-submit the hack. I'm sorry about that.

If you place your asm hack to the end of the ROM and make jumps so as you don't shift code bytes, most will work. In particular, savestates (which deal only with RAM and processors states), or cumulating patches (as long as they don't have extra code of course, in case you just have to put your own a little further) will work.

In previous posts vivify93 said he didn't want to do this, that's why I made that suggestion. I try to propose all solutions and workarounds I can think of to get rid of as many bugs as possible. It's all up to the creator of the hack, though.

If you or Lory1990 are interested by an in-depth hack of the Genesis version, I have other private links that may be interesting (send pm).

I'm interested in the links as well, so send them over.

I think that unused line of dialogue is meant to be narration. By the way, Lorenzo, do you think that the reason the healing for Trimates, Nasar, and Nares is so high is because enemies can heal? I know enemy HP can go over 999.

The value 10,000 in this case only applies to the techniques, so there's no problem. One theory I have is that they probably wanted the characters' HP to be much, much higher (even over 999) so that healing value would be a guaranteed full HP recovery. It's a stretch though. If it makes you feel uneasy, you can revert it back to the original value.

Here's some other stuff:

- there's some text in the Central Tower section:

"Something is rotten in the state of Mota! Neifirst is dead and the Biohazards have been destroyed... But why was a creature like Neifirst created in the first place? Who is behind all of this?"

  I have no clue as to who was supposed to have this piece of dialogue. Probably the commander? Or some generic person in one of the towns?

- I was never able to achieve this bug, but I read up on the internet that you can duplicate items. It requires some precise timing and it's kinda complex. Since it's
  very rare and hard to pull off, I'll probably leave this alone since I cannot even do or wanna do it.

- Stats are not capped at 999. Once they go over 999, the hexadecimal value will be displayed, and wrong to boot. For example if you'are at 999 HP and they go up
  5 points, A04 will be displayed.

- There some music bugs I would like to fix, but as of now I don't anything about sound for Genesis/Megadrive or in general. I'll get to that sooner or later thought
  since I wanna have a good understanding of the hardware in general. When A Place of Death (boss battle music) plays, and there's a sound like when you attack,
  some instruments are suppressed; or when you pause the game at Rolf's house, you hear an annoying beeping noise.

More will come later.

For Trimate, Nares and Nasar go to address $239A and $239B and you'll see the values 27 and 10 (basically 10000). Change the two values to 03 and E7 (999) respectively and it's done. This logic is only applied in battle. When used on the map screen it will just take the maximum HP and add it to the current HP (capped to max HP).

You know I was wondering... To have certain bugs fixed, we need to change the ASM code. If you feel like it, I can edit my ASM code to accommodate the changes you made in your hack. Then I can add all the code necessary to fix the bugs and whatnot, and I will create a patch for you to apply to a clean ROM. All pointers will be adjusted accordingly so the game will work just as fine. A couple of things though: I didn't test the whole game (from start to finish) when applying changes like this (adding or removing asm code). It should work fine, but you never know... Also save states that you have for the original game won't work because of all the data being shifted, so a new game must be started. If you feel uneasy, it's OK, I was only suggesting that. So how about it?

Edit - Another thing but this should be obvious: applying other patches will not work due to data being shifted.

No, don't worry. I only work on patches when someone tells me to. I don't like having random data throughout the rom either.

Edit - As I said earlier I'll be posting some miscellaneous findings like bugs, unused text or art, etc.. Some of these are most likely known but I'll mention them anyway, also to confirm what's been found or assumed over all these years.

- Ghost party

   Sak can be used on the caster as well. On the map screen, when he/she uses this technique on himself/herself and all characters are dead, there won't be a game
   over, you can still scroll the screen as usual. When you enter a battle, though, and start fighting, it'll be game over instantly (of course).
   This bug can also occur when you enter any shop or central tower with only Shir alive and she steals an item.

- Anna unused battle sprite

  In the list of the character sprites in battle is also an unused sprite for Anna: it's the animation for guns. Here's a screenshot:


- No wall collision
  In Menobe you can walk through a wall on the third floor:

  Once I have a clearer understanding of maps and collision, I should be able to fix the bug without too much trouble.

- Intro screen dams

  After the ending credits you're taken back to the Sega screen. When you are in the title screen and wait until you get to the Motavia intro screen,  some flags don't
  get cleared and you'll see this:


   The dams show as opened but they shouldn't be.

- There is an used piece of dialogue for the inventor in Kueri:

  "Now, let me see, what can I work on?"

  This was probably meant to be used after
he gives you the gum so that you don't have to hear the initial dialogue since it doesn't make sense
  This text does get loaded in the code but is immediately overwritten by the initial text. Most likely they wanted to include a check and see if you're done with that
  event but they seem to have stopped halfway through.

- This is well known, but I can confirm this: Luck, Strength and Mental stats don't do anything at all!

- Shift increases attack, agility and dexterity by 20; Shu and Sashu increase defense by 20; Ner and Saner increase agility by 10;

- Trimate, Nares and Nasar heal 10,000 HP (kind of a lot, huh?)

There's more than that, but I'll continue another time since I'm tired

Hey vivify93, if you're really interested in expanding the USE/GIV/TOS window, we can use the same workaround as the music freeze fix: basically we create a new, larger window in an empty space in ROM. We just need to change the pointer to this new window. Of course if you're OK with having some bits of data scattered around in the ROM...

IIRC, slow-motion disables ennemies encounters.

I re-read my post and I worded it poorly: when I said slow motion was a design choice I meant whether vivify93 wanted to leave it or not in his hack as it's not an issue per se. My bad.

Slow motion was used mainly for developers to test what would happen each frame. There could be other reasons I'm not aware of... In any case apart from the speed the whole code processing is the same so random encounters are not disabled. The only thing is that the music that was playing before pausing is the same regardless of which map you are in.

lory1990 - I don't really mind it if there's a small chance to escape all battles. If there was a chance to remove the 1% from the Army Eye battle and that only, I'd do it just to prevent that error. But I want to keep the chance to escape from the boss at Climatrol. Adding to that, I like the slow motion Easter egg and I don't mind having to fix the checksum of the ROM when I combine patches or update the mod. Thanks for your input, though--keep it coming! :)
Nope, I've gotten into battles in slow-mo mode before.
Wouldn't we also need to expand the strings to fit in the menus though? Regarding expansions, to be honest, I'm mostly only interested in expanding the Use / Giv / Tos menu to actually say Give and Toss. I'm not sure how difficult that would be though.

For the Army Eye battle I would need to add checks in the code... Very hard for just hex editors.

I actually tried to expand the Use/Giv/Tos before and it looks neater. Do you want to see a pic of it? It's not hard in itself, but I (and the same goes for tryphon as well I think) can edit the code like expand and reduce it without problems because of the assembler relocating every pointer through the use of labels. For just a hex editor it's not very easy...

vivify93, here are a few other things:

- There's a very small chance to run away from boss battles. It's around 1% or less but that depends on how the number generator works. Enemies have, along with
  other properties, a byte which affect the chances of you escaping: the higher the number the higher the chances are to escape. When a random number is
  generated, it compares this number with the value of the escape rate byte. If the number generated is less or equal than the escape rate byte then you can run
  away otherwise you get attacked. Bosses have this escape byte with value 0 so if the random number is 0 the code checks if they are less or equal (in this case only
  the latter applies) so it exits the battle. This is very rare but it counts as a won battle, and this could be a problem for Army Eye: there would be no trigger and you
  are stuck. The fix is simple: we just make it so that it checks only if the number generated is less than the escape value. The side effect is of course that you have
  one chance less to escape the other battles. A workaround would be to increase the escape value by 1, but there are a couple of enemies that have value FF so
  it's not possible to increase it since it's only 1 byte, unless of course you include a check in the code...

- Do you want to remove slow motion? I think you know what it is: it's activated when you hold B or press C when the game is paused. No issue here. Just a design
  choice. Let me know what you wanna do.

- Do you want to remove the checksum test? Well, I'm not going to remove the whole function of testing the checksum, I'm talking about removing the condition
  that makes you end up with a red screen should the checksum be wrong. Again, just a little convenience but nothing serious since fixing it is easy. The emulators
  will still report that the checksum is wrong if the auto-apply-checksum option is turned off, but the game will still work normally.

I'm making a list of other bugs and little annoyances and I found other unused text, although fixing them (especially with only a hex editor) will be hard. In any case
I also thought I would share the info I found out.

It's OK. Go ahead.

No problem  :)

I wrote the document about the tech-cast-by-item. Here's the link:

Feel free to ask for clarifications if any. Note that other than changing ids for the technique produced by any item, the way it was coded doesn't make it so flexible. For example if you want to make a new item cast a technique there are some considerations to take into account. First of all, not all the tech-cast items are sequential, meaning that it takes some programming logic to achieve this effect. It's hard to explain without seeing the code, so I don't expect you to understand this completely. The items in the inventory list from Amber Robe onward are handled singularly so you can just change the id of the item being tested and make it cast techniques.
Another problem is that you can't add new technique casts from item use without changing the code itself, and this results in bytes being shifted and that breaks the game. Of course it can be done just like the music freeze fix, putting additional code at the end, but I prefer avoiding this if possible. Another problem off the top of my head is that items producing Gra all share the same code, meaning that if you change the id for Gra all the items are affected, so additional logic must be implemented.

As for other things to implement in your hack, I've been thinking... How about making Anti and Rever usable in battle as well? The choice of not including them was most likely intentional; I doubt it's a bug  since no one who has these techs can use them in battle. Maybe they thought it would make the game too easy, but I don't agree too much on this. Opinions?

Anyway I presume you know how to edit technique data, also to make them usable in battle. It was only a suggestion...
The only problem is Amy will end up with 17 techs and the limit is 16. Of course a simple workaround is to just drop techniques like Foi, Gra or Gigra since I personally never used them too much in general, let alone with Amy.

For the tech-cast-by-item I will post a link to a txt file for you to go through and maybe you could include it in your hack folder along with the ROM and other documents; you can also edit my document however you want  if you don't like something, like the layout, choice of words etc... Will that be OK?

As for fedorajoe, I was wondering because I sent him some emails with bug fixes and other stuff but he never replied. But it's OK, though, I was just curious.

No problem.

As for Fire Staff casting Gifoi, go to address $268F: you should see the value 01. That's the id for Foi. So change it to 02 (Gifoi). Do you want the addresses of where the functionality is implemented and where to change id values?

If you want to implement anything else, feel free to ask. I'll try and see if I can work it out. I'll post again if I find something odd, bugs and whatnot.

This is also Phantasy Star IV topic. I wish I could help out with that game as well, but before that, I wish I could also study PSIII code first, so it'll take a while.

A bit off-topic, but this reminds me... Even fedorajoe had some things he wanted to implement in his hack (PSII Modernization), like weapons with different techniques effects, shift cast on any party member, etc. Maybe he could take a look at  this thread as well to check what's been found. Has he been around recently?

Fortunately, the pointers for both the block and text are referenced independently so we only need to change two bytes. Change the values 09 and 27 at
the following addresses respectively:

$A49E = 00
$A49F = 04

So now we are referencing the 1st block and the 4th pointer of the text in it, which is the one you wanted.

Another thing. Recently while going through the whole script in the game, I found an unused piece of dialogue:

96 - "Good grief! We now have to worry about the lake getting flooded."

The number 96 is the pointer for that text. Had I found this line sooner, I could've told you to use it for the old man in Paseo. Probably you want to leave it as is,
but if you want you can replace the pointer you used for the fix with this one so that this text doesn't go unused and you can have him have a unique line. Of course
this is also additional information so that you or someone else are aware of this.

I found a bug which is also in the original game. When you are using only Rolf and select ORDER, a wrong piece of text is displayed. Take a look:

vivify93, tell me how you want to go about it: do you prefer leaving it alone, including new text, or something else? It's all up to you. I'll see if I can fix it.

My participation in this project is anecdotal, I don't deserve credit

You suggested where to put the fix, so you DO deserve credit  :)

While fiddling with this new version, I found a minor glitch in the dialogue window when talking to Ustvestia:

There's a blue portion coming out of the window and I'll explain why it happens: at location $1B156 a new line starts (there's a C1 before that). Only 24 characters
can fit in one line and the following characters will of course go out of the window. At address $1B16E and $1B16F there two 00 which represent the space
character but technically they are just blue tiles. So you should immediately put the terminator C5 after the period and then pad with 00 what's left. In the end the fix is as follows:

$1B16E = C5
$1B16F = 00
$1B170 = 00

So you can resubmit the file with this glitch out of the way as well

Thanks tryphon  :)

I moved the fix towards the end, though. There was no need to expand the ROM. There's a section of ROM padding and I'm totally sure there's no way other parts
of code can get that data.

vivify93, here's the link for the patch:

Apply this to any original UE ROM. There shouldn't be any problems with other patches so go ahead. Test and see how it goes.

It will work because the fix doesn't overwrite the data changes for the x4 EXP and MST patch.

tryphon, I have the ips with the fix ready. Can I provide the link with the file? I'm asking because you were the first one who wanted to send the ips to vivify93, so if
you have it, go ahead. But if you still didn't get around to creating it, I will post the link with the ips
Also for your information I found a lot of free space in the middle of the ROM. It's just bytes with 00s, there are like 1000+ bytes free. I decided to apply the change
there rather than doing it at the end. It feels much cleaner this way, at least to me

Pages: 1 [2] 3