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 - Fox Cunning

Pages: 1 2 [3] 4
Personal Projects / Re: Ultima: Exodus (NES) --- Now released
« on: February 23, 2020, 04:34:11 am »
Alas, I tried several roms on the net, and couldn't get the patch to work. Maybe I apply it badly. I'm used to .ips and .bps.
So I couldn't test the beta version, and was kind of hoping the final release would be more conventional. ^^"
Oh man that sucks! I had to use XDelta because the patch contains a lot of relocated code and data, unfortunately.

If the batch file contained in the archive doesn't work, you can try using XDelta 3 GUI.
If you are using Linux I think you're stuck with the xdelta 3 command-line, while on Mac OS X it should work with MultiPatch (I'll test it soon myself).

Personal Projects / Re: Ultima: Exodus (NES) --- Now released
« on: February 22, 2020, 03:35:05 pm »
It's online! ;D Very proud of my first NES hack, whether it has success or not it was a fun and rewarding experience.

Will the list of changes be in the readme file?
I've been as thorough as I could in my release notes ;)
Next time I'll try to keep tidier notes though, it was a pain going through them and I might still have missed something.

Also, your project inspired me to hunt down resources for learning 6502 assembly. Now I'm trying to balance pixel art, Unity/C# classes, looking into C++, and now assembly, lol..  I have too many ideas that I don't want to go to waste.
That is awesome, 6502 assembly is very fun although working around its limitations can be as rewarding as it is frustrating sometimes.
Good luck with your endeavours!

After a few more hours of playtesting, some quick adjustments and a small bugfix, I've now submitted the official release version 1.00, let's hope it gets approved quickly! :woot!:

Just a quick update as I've been testing the current pre-release with a "normal" (e.g. no cheating) playthrough.
So fare I've found and corrected one minor bug, and if nothing else pops up then I will be publishing the finished product just in time for the week-end :beer:

I would like to share with you this package of graphics that I am editing for the mesen emulator, it is still in alpha and may have some errors, and the characters will still be doing
Cool contribution! I'm glad there is interest for this game (as well as other Ultimas).

I hope I'll be able to also release a usable editor soon and see if people will come up with new maps/quests/etc.

Is there room for more character portraits, by chance?
I think I've left room for one or two more portraits, but the real problem is that the game doesn't have any sort of unique IDs associated to NPCs.
Basically, each portraits is tied to a dialogue, and multiple NPCs could use the same dialogue, so I had to keep track of who is saying what to make sure no women would show up with a man's face just because they are repeating the same line as a male sprite.

Ultima 5...
It was an interesting attempt, akin to the crazy Ultima 6 port for the Commodore 64, but with worse results. And barely playable.
One day I'll have a proper look at that game and see if it can be salvaged, but if I had to re-make it from scratch, I'd use the PC version as a base and improve on that one instead.

Could it be possible to add the V portraits to your mod in addition to the ones from VI?
Note that they didn't use scrolling, leaving one separate screen dedicated to dialogues/spellbooks/inventory etc.
This means their portraits were not limited to using the same palettes as the map like mine, and they had more freedom with attribute alignment.
Basically, they can't be just copy/pasted into U3 I'm afraid.

What would you recommend to someone who wants to acquire skills akin to yours? Udemy has a class for programming games for the Atari 2600, and I thought that taking that class might be a good way to start learning assembly.
Well, I am an engineer working for a semiconductor chip manufacturer and while this is my first NES hack, I had known 6502 assembly since the Commodore 64 days. But I'm sure anyone with enough patience and curiosity can learn quickly.
My first complete assembly project was a Tron game clone for the C64.
Hacking is a bit different in that you need to understand how someone else's code works before you can modify it and inject your own. It's a lot easier when you can make your own code from scratch first.

please, i'm interested in your tool ue editor
I'm still planning to release the editor and source code, don't worry. I just need to make it less of a frustrating experience to use :laugh:


Pre-Release 20200215 available here.
I've ironed out a couple bugs and sped up some routines by skipping sprite updates when rendering is disabled.
If you see any sprites disappearing or appearing when/where they shouldn't, please let me know.

@Scythifuge we certainly share a love for this franchise, I too appreciate all that the community has done! And definitely I'd like to do more.

Remaking Ultima 1,2,4,5 on the NES with this new and improved engine would be absolutely AMAZING. I know this might be a tall order, but if you could somehow get the music from their original versions on home computers ported to the NES version that would be tremendous!! :D
At least U1 and U2 should be doable (funny enough U1 would be more difficult as it included a space shooter section), but everyone loves a challenge!
I'll be studying the music engine as soon as I've published this hack, the goal is to make a separate music/sound one.
Also thanks for the interest and support, I do appreciate your work on FF4 and other games, so that's humbling for me.

wouldn't it be possible to remove the line of sight from programming, or just use one black color? even to make the movement faster, when you are on the ship the movement is extremely slow
Removing the "rogue-like" LoS would be easy, but it wouldn't make movement faster I'm afraid. The party still walks one pixel per frame.
However, I have vastly reduced the slowdown that happens when you are not sailing downwind.
If I recall correctly, in the computer versions you couldn't even move at all except in the same direction of the wind! This should be a lot less frustrating already, but without making the wind feature completely pointless ;D

I don't want to explore too far into the pre-release beta, but I downloaded it so I could have a quick look around and it is amazing!
This might be pretty much to the final version, unless someone can find any other bugs or glitches then I can probably release it next week.

The last thing I was trying to do is reducing the wait when closing the Status menu. I managed to shave off a few thousand cycles compared to the original code, but it's still 2 good seconds of wait.
It may have to stay like this since most of the lag depends on the way the game transfers data from RAM to the PPU. I hope it's bearable.


A quick update as I've just uploaded today's pre-release (still found here).
Just some minor graphical changes and tidying up of my code this time.

Ah I'm orry sorry, I think I worded that wrongly. I was wondering if you required any assistance with the portraits, which I could help with. The only graphical improvements I am working on at this moment are for two Genesis games, one being Fatal Labyrinth, and none of them has portraits.
My bad, I misread your post. This specific project I'd just like to finish as soon as possible now, but I will definitely need a hand when I do an Ultima IV / V makeover.

I apologize for rambling, but I was wondering if it would be possible to hack the music and replace the NES music with the tunes from the Commodore 64/ Apple versions?  I have the midi files and could look into how music is composed on the NES.

I did think about that, but a lot of people seem to really like the original music (I personally dislike the title screen/dungeon music).
So my idea at this point is to do a separate music hack that is compatible with both the original game and my Remastered version.

I am also curious if you have any plans to look at the Warriors of Destiny ROM to see if that could be salvaged, as the NES version is a train wreck.
I will definitely get to U5 at some point (I'd like to do an enhanced U4 as well first). I will have a deep look into it when the time comes, although I feel it may turn out to be easier to just redo the whole game from scratch.

Just posted an updated pre-release version (same post as before on page 1).

This should fix the weapon/armour equipping bug. If you find that you can't sell your gear, please let me know which town/vendor it was, and what item(s).
I've also been experimenting a bit with various floor tiles: if you find them obnoxious let me know.
This version also introduces some optimisations. Nothing extreme, but the games does significantly more than the original release, and in less cycles.

Nice! I was wondering about the colors and detail, thought about doing some portraits based on those - only if you're interested, of course. In any case I need to set some time to play your version this weekend :)
I'm happy to share everything that I have. Will you be working on adding portraits to a different game?

Cheers mate!
Out of curiosity, what version of Ultima VI did you use as a base for the portraits? How many colors can be used on the portraits on the NES Exodus?

I used the MCGA PC version. Those portraits were 56x64 pixels, whilst mine are 40x46 so I couldn't just copy-paste them.
Instead, I drew new ones on GraphicsGale using a 4-colours palette which is the same used by text in the game, as well as water tiles and a few other things.
With careful placement and a larger "border" around the portraits, one could potentially have up to 10 colours per portrait.

almost all armor is neither fighter nor barbarian,
Thanks for the report! Barbarians can only use up to Leather armour, which is correct but as you pointed out I've mistakenly copied the Barbarian's entry in the table in place of the Fighter's one. Will be corrected in today's update.

nor can i sell some weapon parts, like bow, broad ax, and iron sword
Do you remember which shop you were trying to sell these weapons?
All shops should only buy the same weapons that they can also sell.

I would have liked to use grey for castle tiles, but the colour choice is limited by some unavoidable factors :(
- Palette 0 is used for Line Of Sight: must be completely black.
- Palette 2 is used for water: must be blue/white.
- Palette 3 is used for grass, trees and bushes: must be green.

This leaves us with only one palette that must have one green since it's used for plain grass and must have one red in all those maps that, like the castles, use lava tiles. If the lava is green or grey, it may trick players into walking to their deaths, which would be unfair.

Anyway, your screenshot has given me an idea: I can actually have a different pattern that is only used in castles, and a darker floor everywhere else.
This should differentiate the maps some more and make them feel more unique than what a simple palette change could achieve.

I will include that in tomorrow's update.

Thanks for the feedback. I like the darker floor patterns, I'll have to see how the fit in with the different palettes and also hear from other people (I am terrible with colour choices).

I have just updated the link above to a new version after noticing a couple of dialogue bugs, so feel free to re-download it.

Also I had forgotten to mention that I'm using XDelta for this patch, since there is a non-zero amount of code relocation and you never know...

with the fuzzy I can only put a maximum of 30 intelligence
Oops, that's a mistake in my release notes. Fuzzies get max 30 Dex and Int. I will correct that for the next version.

and the enemies continue to attack diagonally
I had disabled the enemy's ability to attack diagonally in an early patch, but it was way too easy to outmanouver them. Basically you could just have one character moving left and right, kiting a herd of enemies that would never attack, while the others could kill them safely.
In the end, the most sensible thing to do is leave it as it is.

Personal Projects / Re: Ultima: Exodus (NES) --- Latest update: 03 Feb 2020
« on: February 11, 2020, 01:41:53 pm »
After squashing more bugs and fixing some more typos, I think I'm ready to share a pre-release version of this hack:
Ultima Exodus Remastered Pre-Release

Here's a complete (unless something got lost in my million pages of notes) list of changes (it's fairly long hence why the spoiler tag):
- Most colour palettes have been slightly altered to better fit the new tile and sprite graphics.
- The intro credits have been compacted to fit into two screens instead of 5.
- The random seed is now properly initialised using the frame counter the moment the player presses the Start button, instead of having a fixed value and thus producing the same sequence of pseudo-random numbers every time.
- Many routines have been optimised for speed.
- New graphics inspired by Ultima IV has been used to replace most sprites and background tiles, including the "cutscene" with Lord British after forming a party for the first time.
- The game can now be saved in Sosaria by pressing the Start button. It is still possible to save at Inns.
- Most maps are now compressed using an LZSS algorithm. As a result of that, the code used to generate loot chests has been completely rewritten, as well as the routines that draw new tiles when moving around the map. Chests now disappear when offscreen. This can be used as a workaround for when a chest spawned on top of a town entrance, forcing the player to open it (at the risk of triggering a trap) if they wanted to enter the town.
- Maps can use additional tiles and have been slightly altered to better use the new graphics.
- Rocks have been added (sparsely) around Sosaria and Ambrosia. The party can try to use them at their own advantage to avoid enemy encounters.
- Each location can now use slightly different colours.
- Battle maps have been modified to include more variety.
- Some maps that had redundant shops have also been altered (for example, Montor West had two bartenders next to each other).
- In Castle British, the Oracle who kept walking on lava is now stationary.
- Some maps have also been altered so that merchants who tent to walk away from their counters won't be able to do that anymore.
- All character metasprites, including NPCs and monsters can now use two palettes for their "sub-sprites".
- Yew is now once again populated by Druids, while Jesters and Scoundrels live in Gray, much like in the computer versions.
- Wild horses have re-appeared in Ambrosia. Unlike in the computer versions, they are not hostile (although the party can attack them).
- A bug that caused loot chests to spawn randomly on the map after fighting townspeople has been fixed.
- Each dungeon now has its own unique colours, fitting its "theme" (for example the Cave of Fire is red).
- Chests use larger sprites in the dungeon pseudo-3D view. They are also visible from a tile away, instead of only being visible when you step on them.
- When stepping on a trap in a dungeon, the character with the best chances (depending on profession and dexterity) will try to disarm it instead of the party leader.
- Simple floors and ceilings have been added to all dungeons (any more comples graphics would have made navigation ever so slightly slower, for no real gain).
- Over 10 typos and misspellings were fixed in NPC dialogue.
- Nonsensical, misleading, and out-of-place dialogue has been corrected.
- 11 lines of dialogue that were missing because of bugs or were just left unassigned have been restored. This includes one critical hint that was present in the computer versions of the game was not visible in the NES version because of a bug.
- The dialogue window now shows a portrait of the NPC the party is talking to. Recurring and important characters have their own unique portrait, inspired by those used in Ultima VI.
- The "pre-made" character selection has been removed. Instead, four characters are choosen randomly from a pool of decent pre-made ones whenever a new save game is created. This allows a player to start the game more quickly and does not require previous knowledge of the game in order to select a balanced party.
- The Start button can now be used as well as the Select button to finish character selection when forming a party.
- Attribute points can be distributed in steps of 1 instead of 5 when manually creating a character.
- Each race now can assign a different maximum amount of points to their initial stats, in line with their lore and max attributes:
  - Human: 25 STR, 25 DEX, 25 INT, 25 WIS
  - Elf: 25 STR, 35 DEX, 25 INT, 20 WIS
  - Dwarf: 35 STR, 25 DEX, 20 INT, 25 WIS
  - Bobit: 25 STR, 20 DEX, 25 INT, 35 WIS
  - Fuzzy: 20 STR, 30 DEX, 30 INT, 25 WIS
- Each profession's main attributes are highlighted during manual character creation.
- The UI has been redesigned, with icons used to represent status, race, gender etc. instead of letters.
- When levelling up, characters now gain attribute points (up to their racial maximum) according to this table:
  - Fighter: 2 STR
  - Cleric: 2 WIS
  - Wizard: 2 INT
  - Thief: 2 DEX
  - Barbarian: 1 STR, 1 DEX
  - Lark: 1 STR, 1 INT
  - Illusionist: 1 DEX, 1 WIS
  - Druid: 1 INT, 1 WIS
  - Alchemist: 1 DEX, 1 INT
  - Ranger: 1 DEX, 1 WIS
- Max MP values and MP/level follows this table:
  - Cleric: = WIS (unchanged)
  - Wizard: = INT (unchanged)
  - Paladin: = WIS/2
  - Lark: = INT/2 (unchanged)
  - Illusionist: = WIS*3/4
  - Druid: (INT+WIS)/2
  - Alchemist: INT*3/4
  - Ranger: (INT+WIS)/4
- Characters have different starting HP and gain different HP per level depending on their profession:
  - Figther: +100/level (starting = 175)
  - Cleric: +60/level (starting = 135)
  - Wizard: +25/level (starting = 100)
  - Thief: +50/level (starting = 125)
  - Paladin: +85/level (starting = 160)
  - Barbarian: +125 (starting = 200)
  - Lark: +40/level (starting = 115)
  - Illusionist: +30/level (starting = 105)
  - Druid: +55/level (starting = 130)
  - Alchemist: +35 (starting = 110)
  - Ranger: +75 (starting = 150)
- The "best armour/weapon" for most professions have been slightly altered:
  - Fighter: no change.
  - Cleric: slightly better gear allows some sort of "battle cleric".
  - Wizard: no change.
  - Paladin: better weapons make it almost as good as a Fighter in melee, but with less protection, compensated by the fact that a Paladin can heal herself.
  - Barbarian: no change.
  - Lark: with slightly better armour, but a slightly worse arsenal, a Lark can be a decent ranged combatant.
  - Illusionist: same as a thief gear-wise to allow the use of bows.
  - Druid: can be somewhat of a backup ranged warrior using a blowgun.
  - Ranger: slightly better weapon choice as this is supposed to be a versatile character.
- To prevent XP-grinding at lower levels, characters slowly gain less and less XP the more they have "stored" until they level up.
- Extra XP is gained by killing monsters in more dangerous areas, such as dungeons and Castle Death.
- Looted chests may contain weapons and armour in addition to gold.
  - Chests found in more dangerous areas can contain more powerful weapons/armour.
- HP/MP regeneration/loss and food consumption routines have been completely rewritten:
  - Barbarians regenerate 1 HP every 4 steps.
  - Other characters regenerate 1 HP every 5 steps (instead of 10).
  - Druids regenerate 1 MP per step.
  - Other characters regenerate 1 MP every 2 steps (instead of 1).
  - 1 unit of food is consumed every 20 steps (instead of 10).
  - Poisoned characters lose 1 HP per step (unchanged).
  - Diseased characters lose 1 HP every 2 steps (unchanged).
  - Diseased characters also consume food at twice the normal rate.
  - Starvation consumes 1 HP every step (instead of 5 HP every 4 steps).
- When on horse, the party can move through bushes or trees at normal speed. According to the manual, horses were supposed to go faster, but in actuality they didn't. This change tries to somewhat honour that promise.
- The slowdown when not sailing downwind has been reduced.
- The second "HEAL" spell has been renamed to "HEAL2" to avoid confusion.
- The general MP cost of spells has been reduced, and scales up in steps of 4 instead of 5 per "spell level".
- The low level "REPEL" and "UNDEAD" spells are now actually random as they were supposed to be, but have better chances to succeed depending on caster's attributes (respectively INT and WIS).
  - They also work on Trolls and Zombies (as they do in the computer versions of the game).
- The damage of "projectile" spells ("MISSILE", "FLAME", "PSI") now scales up with caster level.
- Multi-hit spells ("REPEL", "POISON", "PSI KILL", "DEATH") which had a fixed hit chance per target, now have better chances to hit each target depending on caster's level. The chance is about 50% at level 1, and 80% at level 25. Their average damage is also increased, although the minimum and maximum damage values are unchanged.
- The duration of the "LIGHT", "GLOW", "BRIGHT", "STAR" now also scales up with caster level instead of being a fixed value.
- The "ROT" spell was an overpowered spell that never missed. Now that its MP cost is significantly reduced, it seems fair to add a hit chance (per target) based on caster's level.
- The "OPEN" spell now has a success chance that scales up with caster's level. Also it does not consume any MP if cast by mistake (e.g. when there is no chest to open).
- Healing spells now heal more hit points depending on caster's level and Wisdom. For example, the second HEAL spell (now renamed "HEAL2") had a random value between 100 and 250. In a game where character can easily have over 2000 hit points, that was insignificant. Now the HP gain ranges between 142 (for a level 1 character with just enough Wisdom to cast the spell) to 596 (for a level 25 caster with 99 Wisdom).
- The "RAISE" spell's success chance now scales up with level, instead of being a fixed 75%. The success chance at level 1 would be 61%, reaching 75% at level 15 and 85% at level 25.
- The "RECALL" spell was meant to punish the caster by permanently taking away 5 Wisdom points. However, because of a bug in the code, 5 was subtracted from one of the palette colours (only effective if the screen flashed, for example if immediately casting another spell afterwards). This bug has been eliminated, but instead of permanently decreasing the caster's Wisdom, it reduces their HP to 1 (the current HP, not their max value).
- The screen-flashing time for most spells has been vastly reduced to speed up the game flow.
- The "hit" sprite also disappears more quickly as not to disrupt the pace of the battle.
- Almost all the enemies that were in the computer versions but not in the NES one have been reintroduced. This includes the Pincher, Troll, Zombie, Cutpurse, Fighter, Wizard, Orcus and the special Chest encounter in Castle Death.
- Gargoyles and Manes now have magical attacks again.
- During battle, the turn is not forfeited when cancelling an action (for example choosing the spell menu and then pressing B) or when an action is not possible (for example choosing the "Tools" menu on a character who has no items). The turn is still forfeited by pressing B before any action is chosen.
- Enemies cannot steal items anymore, but they can steal a small amount of gold.
- The enemy AI in battle has been completely re-written and is now a bit faster and a bit smarter, being somewhat able to navigate around obstacles and other enemies.
- Some other routines have been hugely re-written to make battles much faster.
- Obstacles in the form of rocks have been added to some battle maps. They can be used to the party's advantage when fighting with spells and ranged weapons, but also to the enemy's advantage, since they can attack diagonally.
- The delay between choosing the direction of an attack and the actual attack has been largely reduced.
- The currently equipped weapon is displayed in the battle UI when choosing the direction of the attack.
- An icon in the battle UI now indicates whose turn it is.
- The text that appeared when a character was hit would not fit into the UI when the name was five letters long. This has been fixed by altering the text.
- Armour now also absorbs some damage.
- Characters with a high Intelligence or Wisdom have a chance of receiving less damage from magical attacks.
- Thieves now have a critical hit chance, based on level. The extra damage depends on Dexterity and on the weapon used.
- Barbarians deal some extra damage per level, starting at level 2. This extra damage is applied to every successful strike.

If you decide to test this pre-release, these are some of the things I'd look out for:
  • Obviously, crashes and softlocks.
  • Weird or mismatched colours.
  • Wrong or inconsistent dialogue portraits / names.
  • Massive slowdowns.
  • Unenjoyable gameplay (e.g. mandatory grinding, unfair or uneven difficulty etc.).
What is not part of the hack yet: full code optimisation.
I am leaving that last as it won't affect gameplay too much.
Mainly, maps will load significantly faster when that's done, and hopefully the game will react a little bit more quickly to inputs.

In any case I welcome all feedback, positive or not.

* Note: please do not redistribute this pre-release. I will shortly publish a finished version and I'd like that one to be the only one publicly available at that point.

Personal Projects / Re: Ultima: Exodus (NES) --- Latest update: 03 Feb 2020
« on: February 04, 2020, 03:59:13 am »
I'm not sure about this. Is level scaling a thing in other parts of the game? I tend to dislike these kind of tricks in open worlds, as they make the world revolve around the player, à la Truman Show, instead of the player inside a world stranger to him.
If the rest of the game design is not about level-scaling, personnaly I would prefer completely random items, and no equipment, to avoid too impactful equipment loot. Or maybe a sophisticated random equipment (ranging according to the difficulty of the region, of the dungeon, etc.).

That's a very valid point, thanks for the feedback.

To put it in context: I initially wanted loot to depend on the enemy you got it from.
Unfortunately though, all chests are the same and the only variables that is set when you open one is a pointer to the character opening the chest.

But now that you mentioned it, the ID of the area where the chest is is always in memory, so I could use that instead and have better loot in more dangerous areas such as dungeons. :thumbsup:

About the rest of the level-scaling: when it was released, the game was extremely punishing just because of that. When levelling up you would not get more powerful, but you would automatically meet stronger and stronger enemies that still all gave the same reward (a random amount of gold).
The reasoning was that Exodus is sending stronger monsters to fight you as you become stronger...
...But the result was players not levelling up at all until very late in the game since there was no reward for doing so.

I think the suggestion of making loot scale with the area makes perfect sense, and also works as an incentive for players to visit dangerous areas instead of grinding the same map over and over as they used to.

Personal Projects / Re: Ultima: Exodus (NES) --- Latest update: 27 Jan 2020
« on: February 03, 2020, 12:14:08 pm »
Time for some weekly updates!

- Horses allow the party to walk through brush and trees unimpeded.
- Loot chests now have a chance of containing weapons and armour, much like in the computer versions. Higher level characters receive better weapons/armour. Shops are now more useful since you will have something to sell.
- Dialogue portraits have been completed, and each significant or recurring Ultima character now has their own unique graphics.
- Yew is populated by druids, similarly to the computer version of the game.
- As in the computer version, Gray now is home to jesters and scoundrels.
- Armour now also absorbs some damage.
- Characters with high Wisdom/Intelligence now have a chance of receiving less damage from magic attacks.
- Thieves now have a chance of scoring critical hits. The chance is based on character level, whilst the extra damage depends on Dexterity.
- Barbarians now deal a bit of extra damage at higher levels. This extra damage is added to each successful strike.
- XP gain has been completely reworked. If you accumulate XP without levelling up, you will soon start gaining less and less until you eventually stop gaining any XP. This is to discourage grinding at lower levels, which is made unnecessary by other gameplay changes anyway.
- Additional XP can be gained by fighting monsters in more dangerous areas, such as dungeons.

New lootDruids in YewTalking to Iolo

I have clearly used Ultima VI as a reference for portrait graphics.

What's left:
- A few minor bugs to iron out.
- A couple of typos to fix in the original text.
- Some palettes in the pre-game menus need fixing.
- There are still a few places that have duplicated shops.
- The intro "cutscene" with Lord British is being redone (or actually "redrawn").
- The Time Lord will eventually be redesigned too, to fit in with the new graphical style.
- I have explored the possibility of adding at least floor graphics to dungeons. I'm still not 100% sure it will be possible due to not enough room for extra patterns in the PPU, but I will keep it in the list and work on it after I have posted a pre-release version.
- I have also noted some areas where the code can be further optimised for speed (which in most cases means larger code), but I will leave that to after the first pre-release test when I will be more sure of how much extra space I can occupy.

Fair points!

So at the moment I'm almost done rebalancing the magic system. Nothing major, but lots of small changes.
Most notably, spells that previously had a fixed failure/miss chance will now fail more at lower levels and less at higher levels.

For example, the "Poison" spell had a fixed 75% chance of hitting each target, and the damage was completely random (based on frame counter + a shift register randomiser).
With my patch it now has a 50% hit chance (per target) at level 1, and scaling up to 80% at level 25.
Average damage is also increased with caster level instead of being based on the frame counter (but maximum damage will be the same).

The current roadmap is:
1. Finish the magic system rebalance.
2. Implement the  melee/ranged combat changes in my previous post.
3. Finish the "pre-made party" generation changes.
4. Work on the last graphics changes whilst posting a pre-release version of the patch here for gameplay testing.
5. Adjust the gameplay/fix bugs with feedback from pre-release testing.
6. Publish a finished version.

January 26, 2020, 06:05:06 pm - (Auto Merged - Double Posts are not allowed before 7 days.)

I found something interesting whilst working on the magic routines: the "Recall" spell, which was meant to permanently reduce the caster's Wisdom by 5, actually doesn't because of a bug (which is also present in the Japanese version).

Basically, the RAM location where the address to the caster's data is stored gets overwritten before the casting has finished, so instead of reducing the caster's Wisdom, one of the palettes is changed -- this would takes effect only if the screen flashes after casting "Recall", for example if you immediately cast another spell.
The change is temporary and lost if you enter a battle, go to another location, or just open the Status menu.

I had not found this mentioned anywhere. I guess nobody really used the spell. The Wisdom reduction was too much of a punishment for a party that had just had a character reduced to ashes.
You'd have to go all the way to Ambrosia to regain the lost points (at the risk of dying again) and spend 500 gold.

As part of my rebalance, I've changed it to temporarily reduce the caster's HP to 1.
Kind of a high-risk, high reward deal, but not as punishing.

Personal Projects / Re: Ultima: Exodus (NES)
« on: January 17, 2020, 05:14:48 am »
The extra enemies are great, do you think you'll be able to add all the missing enemies?

The enemies I managed to add so far are:
  • Troll
  • Zombie
  • Cutpurse
  • Fighter
  • Wizard
  • Orcus
Now the only missing ones are the "special" enemies: Horse (only found in Ambrosia), Chest (only in Castle Death), Grass (only outside Castle Death).

There is enough of room for extra enemy sprites, but the game uses sprite indices to recognise enemies in this way: NPCs (townsfolk) are $00 to $14, plus $1D which is Sherry/Noriko; roaming enemies are $15 to $1C; $1E is the Whirlpool; the Floor found in Castle Death "recycles" id $05 which is normally assigned to the player owned ship.
To index enemies $15 is subtracted from their ID, while for NPCs $1E is added.
However, enemies go from $00 (Orcs) to $16 (pirates), thus leaving $17 to $1C free to use (and that's where I added the enemies listed above).

Also since the game manages random encounters in a completely different way than the computer versions, it's probably not possible to add the Ambrosian Horses and the Grass without basically re-writing half the game.
Once I look better into how encounters are managed in the castle, I will see if there is any hope to include at least the Chest.

This looks so great.
Never bothered to play the game, because it felt so unpolished.
Once you complete your hack, I will definitely give it a try, if only for your care and dedication.

Cheers mate, this game's always had lots of potential but I felt like it could have been much better - which is why I've been working on it for over a month now :laugh:
I still have a couple of gameplay/balance issues I want to fix, then it should be ready for playtesting while I finish polishing the graphics!

UPDATE 18 Jan 2020

Taking a break from the dialogue UI, I turned my attention to the dungeons and gave them a new "coat of paint".
Now each dungeon uses its own palette, fitting its "theme".

Also, I changed chest's graphics to a much larger sprite for the "3D" view, and chests can also be seen from one tile away instead of only being visible when you step on them.

I have also redone the ladders and the Marks graphics.

Now, as I was testing the game with a high level party I noticed that I was hugely underpowered in battle, and better gear did very little to improve that.
So I looked into the battle routines again, and this is what I found...

Hit chance is calculated using this formula: 8 >= RANDOM(0 to armour + 10)? hit : not hit
So with no armour: 20% miss chance. With Mystic Armour ($07): almost 53% miss chance.
Dexterity is not part of the formula, i.e. dexterous characters are not any more able to avoid damage.

The basic damage formula is: RANDOM(0 to ((enemy's min HP / 8 ) + (high byte of target's max HP * 2) + 1)) + X, where X is normally 6 but higher in dungeons or Castle Death.
So damage is a minimum of 6, and also depends on target's HP.

This can be definitely improved, and while the game should be more challenging at higher levels, the player should also be rewarded for levelling up and have new tools/abilities to better fight the more powerful enemies.
Here's what I thought...
  • Have armour also absorb a bit of damage (similarly to how armour works in Ultima VI)
  • Give high level Barbarians a damage bonus
  • Give high level Fighters an extra chance to avoid damage depending on their Dexterity
  • Give high level Thieves a "critical hit" chance based on their Dexterity
  • Slightly reduce MP consumed by higher level spells
  • Give magic users a chance to reduce magical damage taken (e.g. from Dragon's fireball) based on their caster stats (e.g. INT for Wizards, INT+WIS/2 for Druids etc.)

Thoughts? Opinions?

Personal Projects / Re: Ultima: Exodus (NES)
« on: January 16, 2020, 06:13:40 pm »

I am almost done restoring and fixing dialogues - there were quite a few typos and sentences that made little sense in the original script.
Here is one of the restored lines that did not appear in the released game probably because of a mistake in the pointers:

I've been also working on the battles, and specifically the enemies: most of the enemies from the computer versions of Ultima III have now been added!
Here's one example (wizards):

Personal Projects / Re: Ultima: Exodus (NES)
« on: January 13, 2020, 05:56:59 am »
Are you a member of The Cutting Room Floor? I had no idea there were orphaned lines in this game and they don't seem to have an article for it yet. Seems like something that should be added there.

I'm particularly curious about that fourth wall breaker myself.
I must admit I didn't know of The Cutting Room Floor. I may contact them or see if I can create an account myself.
There are exactly 21 lines that are compressed in ROM but never used in the game.

And the 4th wall breaker dialogue is:
Dialogue index: $AB, packed text address in bank 5: $B50E

If player answers YES or speaks to the same NPC again:
Dialogue index: $AC, packed text address in bank 5: $B52B

If player answers NO:
Dialogue index $AD, packed text address in bank 5: $B539

I don't know if "Computer Gaming World" is a reference to the American magazine by the same name. I'm not American after all.

Personal Projects / Re: Ultima: Exodus (NES)
« on: January 13, 2020, 04:20:42 am »
this game is looking so good, if you can finish it, I would like an editor to be able to rom this game with other games in the last series
I had to create a couple of utilities to help with the frustration of pointers and tables (I now respect the work of ROM translators even more).
Here's what the main one looks like:

It is a very rudimentary tool that can export binary files, and then I have to inject them myself into the ROM where needed.
But if there's interest, once done I am happy to release it as open source and maybe improve it a little.

Personal Projects / Re: Ultima: Exodus (NES)
« on: January 12, 2020, 05:18:51 pm »
Aye, it's one of those areas where the game needs just that little push to become more enjoyable.

Another slight gameplay change I finished implementing over the week-end: characters now receive 1 attribute point in up to two stats depending on profession when levelling up, up to racial maximum.
You will still need to visit Ambrosia to max your attributes.
One of the main critiques of the game was that it punished the player for levelling up, so this is another change that tries to push in the opposite direction.

After that I turned my attention to the dialogue, and I discovered an interesting thing.
Infamously, one of the clues necessary to complete the game was missing... but the text was actually there!
That and many other lines were just either unassigned or missing because they somehow forgot to add the special character in the previous string that makes a yes/no menu appear, or makes the next line show up when you talk to the same NPC again.

Now at least 20 orphaned lines have been restored, including part of the Zelda reference, and a weird 4th wall breaking dialogue that might be a pop culture reference I don't get.

And since I have improved the map compression and now have an entire PRG bank to fill, I've been using it for dialogue portraits (WIP):

Pages: 1 2 [3] 4