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

Author Topic: Arcana - Seal of Rimsala! (SNES)  (Read 120415 times)

Apocalypse612

  • Jr. Member
  • **
  • Posts: 4
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #160 on: May 02, 2020, 09:37:31 pm »
Sarah's done some absolutely amazing work here with her rom patch(s). If any one you haven't tried out SOR yet, I highly suggest that you do. You will not be disappointed.

Also, the data she has scraped from and compiled from the game I haven't found anywhere else on the internet, so thanks for that too!|

Keep up the fine work.

stratoform

  • Jr. Member
  • **
  • Posts: 82
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #161 on: May 03, 2020, 09:59:33 pm »
Something I've been wondering about. Inhal compresses pretty well compared to standard HAL. When the new dungeon maps are completed, would the ROM have to be expanded? It feels like they could be squished back into the original space with room to spare.

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #162 on: May 04, 2020, 04:39:20 pm »
They could be, yes. I think torha suggested leaving them uncompressed because the game runs uncompression on the map like every frame, and the extra space significantly speeds up the game. ...Which is strange bc it uncompresses the map into RAM when you enter the dungeon.

In the meantime while I wait for torha to return and field compression/patch questions, having the maps uncompressed is super useful for testing and map editing. If I get to the point where I inhal the maps and leave the game unexpanded, I'll basically need to write a utility to run exhal/inhal and edit the maps. Right now I just have a tool I wrote to extract the already-uncompressed maps to .txt for editing, but writing one to re-insert the map data is gonna take a lot of error-checking. More importantly it'd be super useful to have a tool to edit the maps rather than tracking my changes in a TXT, but I haven't decided how I want the layout to work. (Will probably work like 1. Pick map number, 2. Pick row number, 3. Pick column number, 4. Input new value) :P

I'm gonna work on other sections while I wait for torha, so there aren't patch issues etc. Hopefully they're ok and come back soon.

Minor updates:
-Changed Rooks' "Card" ability to "Arcana"
-In work: Modifying some enemy formations (arrangements)
-In work: Increasing types of available enemies per area (most have 5 but some have only 4)
-In work: Decreasing backtracking and making areas more interesting

Also...
-Received a patch from RetGal that adds a credits line for me in SOR  :o 8) He's a heck of a fast learner and working on a Spanish translation for vanilla that uses the diacritics and such. Check it out sometime~
« Last Edit: May 05, 2020, 06:51:18 pm by Sarah Shinespark »

stratoform

  • Jr. Member
  • **
  • Posts: 82
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #163 on: May 06, 2020, 04:03:02 pm »
Tried to find some old-school Cartographer drawing program for ye olde RPGs like Wizadry, Pool of Radiance and such but nothing satisfied me. Excel doesn't cut it.


For SOR, I'm wondering if it's possible to modify bsnes-plus:
- https://github.com/devinacker/bsnes-plus
- Expand memory editor to 32 bytes per row
- Color code text based on dungeon floor codes

Then you could just open up custom debugger, edit RAM floor tiles and see the effects in almost real-time without lots of (disgusting) re-loading.

I'll let you know if I can make something like this work..

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #164 on: May 07, 2020, 07:00:33 pm »
Thanks! Yeah I can expand the RAM editor in Geiger's, but color coordination would make things SO much easier... especially if I could hide "00".

Just thinking out loud, I heard the instruments and sound engine is similar to other HAL games like Kirby Super Star. It'd be funny if I could swap in music  ::) Really wouldn't fit, but it would be cool to see if it's possible.

stratoform

  • Jr. Member
  • **
  • Posts: 82
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #165 on: May 08, 2020, 12:17:21 am »
New idea.

1) Download Cheat Engine and install
https://cheatengine.org/downloads.php

2) Download this tool and copy to CE install folder
https://github.com/stratoform/archive/raw/Arcana___Seal_of_Rimsala/Maps%20-%20Cheat%20Engine/cheatengine-i386.sor.exe.7z

3) Run snes emulator and play to dungeon floor

4) Run CE.SOR and 'Open Process'
   Select Snes emulator of choice.

   You'll have to find the floor layout using an "array of bytes" search.
   Check with Geiger or Bsnes+ memory debugger to be sure.

5) Now click 'Memory View'
   You will see a variety of colors. Edit what you want.

   If you want custom RGB colors for each range, just give me the #s and I'll change them around. ;)
   Walls (00) are invisible.

6) When done, either use Geiger / Bsnes+ memory save. Or CE 'Save Memory Region' to dump to file.


It's complicated. I'll help you through with each step that needs help.
« Last Edit: May 20, 2020, 11:49:55 pm by stratoform »

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #166 on: May 08, 2020, 01:58:35 am »
Ah, I have the ROM addresses for the maps (well, where torha put them). The RAM version is just at the end of RAM, can't miss it~

That does a bit involved, will hopefully have time and energy to look at it tomorrow!

stratoform

  • Jr. Member
  • **
  • Posts: 82
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #167 on: May 08, 2020, 08:38:20 am »
I'll try posting some pictures to guide you along. Check this post for edits sometime later~


1) Start Snes9x Geiger

2) Run Cheat Engine SOR
https://github.com/stratoform/archive/raw/Arcana___Seal_of_Rimsala/Maps%20-%20Cheat%20Engine/cheatengine-i386.sor.exe.7z

3) Open process


4) Edit memory and search


5) Now freely edit dungeon map


6) Tell me which tile #s to change to what RGB colors ;)


Side-note: Your new avatar gets a :heart: icon.


EDIT:
I suppose I should later add a mini-tutorial on how I edited Cheat Engine to do this tweak. It's not difficult but the actual steps can be hard to figure out.

Some of the default colors suck. Wouldn't mind changing it around like Pink, Orange and other vivid useful shades, plus some other code tweaks.


EDIT2:
How to make your own Cheat Engine mod.

1) Install latest version of Lazarus

https://sourceforge.net/projects/lazarus-snapshots/files/Window%2032/
-- ex. lazarus-2.0.8-fpc-3.2.0-beta-44680-win32.exe

https://sourceforge.net/projects/lazarus-snapshots/files/Window%2064/
-- ex. lazarus-2.0.8-fpc-3.2.0-beta-44680-win64.exe


2) Download latest Cheat Engine source code
https://github.com/cheat-engine/cheat-engine/archive/master.zip


3) Run Lazarus.
   Open "Cheat Enginecheatengine.lpi" from src archive.
   Run --> Build.
   Press "Green arrow" to go.


4) Make these changes to "Cheat Engine//hexviewunit.pas"
https://github.com/stratoform/archive/commit/db48c060014eea564e137fab14a0425b5a34cfa7


5) Run --> Build again. Test.
   Standalone release build is in "Cheat Engine//bin"
« Last Edit: May 20, 2020, 11:49:19 pm by stratoform »

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #168 on: May 09, 2020, 12:36:21 am »
I had to double-take that the maps didn't have a hidden "babe d00d"  ::)
Got sidetracked today tracking down text opcodes after finding a minor display bug in RetGal's translation, didn't figure it out but got some more research from it. Now I can follow subroutine and ram jumps hidden in text. Still a lot more opcodes with spaghetti code that's super hard to read... $A7B5 is complicated  :huh:

stratoform

  • Jr. Member
  • **
  • Posts: 82
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #169 on: May 09, 2020, 08:01:23 am »
I added the lame codeword using Geiger's RAM editor.. bwa ha ha! Then did the CE search.


Special hexcodes makes it easy to find where the maps are stored using Cheat Engine. Then (naturally) you erase it. Would be a very silly, stupid joke to accidentally leave it in the map. ;)


You could also use "baad f00d", "feed c0de". Whatever fancys your creativity. Or you could go the longer way and search for the hexbytes that the floor layout has.
« Last Edit: May 09, 2020, 08:50:36 am by stratoform »

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #170 on: May 09, 2020, 06:01:22 pm »
Well that... almost worked. Editing that text in RAM is easy, but in ROM the tile data is compressed (the EN in NINTENDO uses the EN from LICENSED) which makes the data entry an odd number of bytes from saving 1b. I got away with it for the subtitle because the title graphics there use a line for a tiny speck of the bottom graphic, which is easy enough to overwrite  :cookie:


Most of the tile data makes sense, like
04 8D 04 97 04 98 (tiles 8D, 97, 98)
but then where I'm expecting a 04, it has another high number:
84 06 91 02
...and neither 84, 91 are tiles. That line somehow retrieves the tiles 8E, 9A from LICENSED.

So much more tracing to do to understand this stuff  :(
This is why I get sidetracked so much on this project; I see something small, think "huh, that should be easy", then nope it doesn't work because of hardcoded x. Let's find out why! ...THREE HOURS LATERRR


EDIT1:
Making strides in editing the maps and encounters.
-Confirmed treasure chests can be relocated, if their location is also updated in the contents list.
-Confirmed monsters can be swapped and repositioned.
-Very odd display bug with the Ogre, poor guy may be doomed to obscurity with one minor appearance  :'(
 Other enemies can be substituted fine, but Ogre's graphics don't load and even make other enemies look like Goblins. Doesn't make any sense! For now I'm using Lizardman.



Upcoming enemy changes:
Balnea 1F: Added 1/16 Lizardman, 1/16 Chimera
Dwarven Pass: Added 1/16 Flytrap, 1/16 Wolfsbane
Crimson Valley: First half now has Lizardman instead of Assassin
Crimson Valley: Added 1/16 Flytrap, 1/16 Wolfsbane
Forest of Doubt: Added 2/16 Thief, 2/16 Assassin
Remorse 1F/2F (Ch4): Switched Knight to Mimic, switched Warlock to Mage

Ch1-3 maps have surprising changes to them as well  8) I think y'all will have a blast exploring these.
« Last Edit: May 11, 2020, 01:16:33 am by Sarah Shinespark »

stratoform

  • Jr. Member
  • **
  • Posts: 82
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #171 on: May 13, 2020, 10:16:45 pm »
Sometime I'm decently interested in helping out with changing the title screen text and looking into that Ogre bug, if no one else chimes in.
(Currently absorbed with hacking SMAS)


Have you tried swapping Ogre in vanilla USA and Japan ROMs? They suffer the same problem?

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #172 on: May 14, 2020, 04:10:42 pm »
Yeah, it's the same issue in vanilla and CM. Really surprised, I assumed Card Master's tables would be relocated since the text is a different length, but so far bank $18 is the same  8) awesome, that means I can eventually have edit support for CM as well.

What's interesting about this bug is that when changing Goblin + Goblin to Goblin + Ogre, they both use the Ogre colors. When switching Pickpocket + Pickpocket to Pickpocket + Ogre, the swapped PP uses a glitched Ogre sprite. Other monsters work just fine, but not Ogre  :huh: The stats seem to load accurately, just that one graphic doesn't play well with others.

If you wanna play around with it, here's my test changes:
-$18/9149: Change 00 03 05 07 09 to 00 03 05 07 04
-$18/9150: Change 00 01 06 07 09 to 00 01 06 07 04
-$18/949C: Change 05 01 06 01 24 02 to 05 01 06 04 24 02

First 2 set the 5th enemy ID to Ogre's, last line changes encounter 7 to use the 5th enemy in the ID lists.

Trace $18/80A2, get in a battle then edit register A to the encounter (7). It'll pull up either the 1st or 2nd depending on where in Balnea 1F you are, 1st is by the front and 2nd is by the C-shape on the left.

Just y'know, if you wanna mess around~


EDIT: Okay, yeah it has something to do with recolors. If 2 enemies with the same sprite are in the same list, the later one is the palette used. So Slime + Jel loads Jel's red palette, but Jel + Slime loads Slime's.

Yeah, for some reason Pilferer (01) shares gfx with Goblin (03) and Ogre (04), if they're together with P last then everyone has P's graphics. Same goes for Assassin (13). Gonna need to playtest the different formations as I add them >_<


EDIT2:
No dice finding enemy graphics, but PC gfx are in bank $0E. Rooks' out of battle sprite is $0E/81A1-8550 (3B0 bytes) for reference. Tracing is a PITA since the decompressor code at $877C is called for like the entire bank and not always contiguously. I'm... gonna leave that alone for now and just keep recolors apart when designing 2.0.


EDIT3:
Map and treasure changes are about done for now, preparing to playtest.
Also this will prooooobably break midgame but I'm tempted to make the Scale Mail water-elemental.


EDIT4:
Found the weapon shop inventory. Proof for shits and giggles:



v2.0 is looking sharp, PM for beta testing. Gonna look at torha's patch conflicts and work on a release. SORv2.0 will be an expanded ROM, you can use FLIPS to patch and it will auto-expand for you. I can check for SNES Classic compatibility. Reason being, the game is so much faster this way. If there was a way to store them uncompressed in the original space, that'd be fine. But, that's not been done here so I'm favoring speed as entertainment.

Come check it out!  :woot!:
« Last Edit: May 16, 2020, 01:55:17 am by Sarah Shinespark »

stratoform

  • Jr. Member
  • **
  • Posts: 82
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #173 on: May 20, 2020, 05:58:26 pm »
Been gone for too long and all this happens! Don't think there's enough space to store uncompressed dungeon maps in original ROM.

Wish I had time to check all this out..

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #174 on: May 29, 2020, 01:12:35 pm »
Two utilities are live now! For those of you that like having your ROM's data outputted to a file.
Arcana Monster Reader
Arcana Treasure Reader

2.0's been tested, just organizing patches to check for conflicts.

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #175 on: June 11, 2020, 11:58:04 am »
Uh... neat! I put all the patches together, and once I enter the first dungeon the game crashes.  :crazy:
Ok figured it out, there's a patch conflict between Dungeon Map expansion and FastROM so you have to patch Dungeon Map second or it can't read the expanded maps.

SOR v2.0 is starting playtesting.

EDIT:
Found a bug in the Spell Reader patch, displays the quantity on Cards page 2 to $66 repeating. Page 2 is stored in a really weird way and interlaced with Page 1 selections, so it's hard to tell where entries should end.


And another bug, somehow casting the Call Spirit spells on a Shaman freezes the game.
« Last Edit: June 14, 2020, 01:23:18 am by Sarah Shinespark »

Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #176 on: June 21, 2020, 07:23:12 pm »
Almost ready for release! PM me if you'd like to test the awesomeness.
Fixed a bug present in all versions where level-up text could only handle 2 digit numbers.


Sarah Shinespark

  • Full Member
  • ***
  • Posts: 105
  • Creator of Arcana: Seal of Rimsala
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #177 on: June 29, 2020, 01:43:24 am »
Okay, while waiting for the queue to open up I thought I'd share some research I've been doing. This goes to show how confusing the game's code is, having its own scripting language to decypher. So the background on this, I figured out the item handling code is loaded when double-clicking the item (solid red border on Rooks). Trying to see what if anything gets called for different items so maybe I can find leftover code for Water of Life or just know what's going on better. So with this scripting, the first byte is doubled and references a pointer table of different handler functions. The code is iterated with RAM $10, and some subroutines are called with $1049.

Code: [Select]
Double clicking a Medicine out of battle
81:9584: 07 71 A0 07 Run $07:A071 is item useable out of battle
81:9588: 0B 25 97 If false move to 9725
81:958B: 07 DF A0 07 (Else) Run $07:A0DF is item the Enchanted Jewel
81:958F: 0C 25 97 07 If true move to 9725
81:9592: 07 AA A0 07 Run $07:A0AA load selected item
81:9596: 07 C7 A0 07 Run $07:A0C7 is item a Return Ring
81:959A: 0C C2 95 If true move to 95C2
81:959D: 04 37 F1 05 Move to $05:F137
85:F137: 07 2A BB 07 Run $07:BB2A store a bunch of values from nearby RAM into 11A1-11B3
85:F13B: 07 F8 BA 07 Run $07:BAF8 load the item and store in $18C3
85:F13F: 12 11 If item (0C) is less than 11, move to code using the (0C) word in the following pointer table.
85:F214: 1B F5 F2 0C Move to $0C:F2F5
85:F2F5: 0F 01 00 00 Store 0000 in a RAM address (09C9 here) – 01 is the pointer table entry
85:F2F9: 06 02 Return

So looking through the code (rather than summarizing what happened here), there is a ton of code reuse. It loads the selected item in multiple functions and it's like 15 lines each time. Hard to tell how prevalent each function is, if cutting any of them would break code.

July 02, 2020, 03:04:42 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
Update's live! Lmk how you like it  :woot!:
Give it a shot!
« Last Edit: July 02, 2020, 03:04:42 pm by Sarah Shinespark »

Manamiko

  • Jr. Member
  • **
  • Posts: 12
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #178 on: August 02, 2020, 11:15:21 am »
So far this has been a very fun and pleasant experience! I am playing SoR on the Snes-Mini and no issues. I have made it all the way to Bintel Castle slightly underleveled at lvl 37 but have decided to stick around smacking dragons and such til I over level XD.

On a side note, I do not know if it was intentional, but when you changed the attack values and what party members are capable of on their status screen for Attack without a weapon equipped, it does get a bit wonky. I noticed that sometimes their own attack value is higher than what a specific weapon is capable of giving them, so instead of it adding to their attack power, it nerfs it! I have never seen that in the game before. I think a great example was when I equipped Darwin with a lower end sword and his Attack dropped, and it was noticeable in battle.

Other than that, I love this hack!

Zoinkity

  • Hero Member
  • *****
  • Posts: 565
    • View Profile
Re: Arcana - Seal of Rimsala! (SNES)
« Reply #179 on: August 03, 2020, 03:39:44 pm »
Runs fine on a Super UFO!

After playing through the prior version, can attest that throwing Rooks out there bare-fisted is vastly better than ever equipping him with anything.  Granted, if he ever did need to use his MP for anything you'd be in a fix, but his spell selection is so lame compared to just hitting something in the face.  As a bonus, the MP honey gives a bigger boost to his attack than the actual attack honey.

To be fair, it isn't worthwhile to make any of the other characters pugilists, at least in the last half of the game.  Equipment elements and free spells more than make up for it.  Even then Rooks doesn't get anything cool enough to offset having three times the attack of any other character.


Not sure if it is "fixable", but if you reorganize spells that only sticks until the character is "swapped out".  Switching the spirits throws away any changes made to their spell order.