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 - TimeSpaceMage

Pages: [1]
Personal Projects / Arcana - Seal of Rimsala! (SNES)
« on: July 18, 2017, 07:44:56 pm »
(Please PM me at Sarah Shinespark for feedback!)

Hello, everyone! This is my improvement project for Arcana, aka Card Master in Japan. It's one of my first and favorite RPGs growing up. Arcana is an early 90's dungeon crawler with maps that draw themselves as you progress, catchy woodwind music, and a charmingly quaint 4-element battle system: Wind beats Earth beats Water beats Fire beats Wind.

On the other hand: there's a very high encounter rate, the script is Engrishy and full of unneeded capitalization, and (as is typical of early 90's Nintendo games) it's full of religious censorship. Well hey, I can fix that! And so this started as just a script fix, until I learned to edit even more and make the game more interesting. This mod showcases edits to most of the following, because I can!
-Equipment, monster and spell statistics
-Music and sfx used
-Treasure chest contents
-Spell animations
-Character level-up stats and spell lists
-Stage Select starting inventory
-Inventory limits (max # of items)
-Various formatted text

Thanks to rainponcho for the following:
-Decreased encounter rate (Fog Cards are still cheaper for speedrunners.)
-FastROM conversion and 37-47% faster walk speed (Most noticeable in Bintel Castle)
-Multi-levelup patch that supports carrying over leftover EXP towards the next level

FastROM v0.4
Levelup v0.3
(If you'd like to try out the multi-levelup, enemy EXP is loaded to $136B-7A in battle)  ;)

Future content I'd like to add:
-Fix armor in damage calculation. Armor does jack diddly to lower damage, and can be skipped.
-Fix a text issue where some items and spells are written with a trailing space ("learned Change Attribute to Wind .")
-Work out the damage formula and other mechanics.

Finally, here are some before-and-after pics of Vanilla compared with Seal of Rimsala v0.93. Enjoy!

Newcomer's Board / Just modded my first GBA game! (Sword of Mana)
« on: January 01, 2015, 10:32:32 pm »
Hi everyone! Long time lurker and RHDN fan here.

Here's some background on this mod. Sword of Mana is an RPG with an interesting level-up convention; you get a notification when you have enough EXP, and then you can choose to level up whenever you want. Well this is very fun for Low Level Games (as the game can be beaten at Lv01), but the notification is very annoying. It will hover over your character for the rest of the game if you don't level up!

Well here's what my mod does!


Now this doesn't look like much, but it took me a long time to figure this out. So for the other newbies, here's what I did.

1) Downloaded no$gba debugging version. Wish I found out sooner it was finally freeware, lol.

2) Through a day of reading GBA reference guides, I learned that graphics are stored in memory at 06xx:xxxx, and that sprites such as my "Lv up!" text are OBJ tiles or OAM. In no$gba: Window->Tile Viewer-> OBJ Tiles to get to the Video RAM viewer to see which graphics are currently loaded in memory.

Here's the graphics stored while I'm standing in the field. The "Lv up!" text I want to remove is on the upper right, loaded even though I don't have a level up. (This puzzled me for awhile, as I figured it would only be loaded after I leveled up!) I'm hovering over the "L", so you can see the address of the text in memory.

I opened the status screen to load different graphics.

Now once I leave the status screen, the field graphics will be reloaded into VRAM! And since I can get the tile addresses with the VRAM viewer, I can set a write breakpoint for the level-up graphics to see which instruction writes it! As I found out from the no$gba Help file, the format for writing a write breakpoint for the address 060102E0 is [060102E0]! The single ! indicates a write to that address that changed data. (This was the hardest information to find, and I highly recommend downloading the compatibility file so you can view the Help file.)

So I enter the status screen, set my breakpoint, and back out of the status screen. It breaks at the following screen:
Using this file on locating graphics as a reference, the instruction before the breakpoint is what triggered it, meaning "strh r3,[r1,r5]" wrote part of my Levelup graphic. How do I double-check that? Well the instruction says to add r1 and r5 (0601:02E0) then store the value of r3 (0000:1111) to that location! (Thanks GBATEK!)

OK, so where did it (1111) come from? The instruction before that is "ldrh r3,[r0,r5]". From context, it's loading the value from r0+r5 (08D8:7BD0) and putting it in r3. But in GBA, 08 addresses are from the copy of ROM, so I've found the original data! Turns out the ROM doesn't use the 08 prefix, so the address there is just D87BD0. I zeroed out the data there using WindHex, saved a copy and reloaded the save state. After opening and closing the status screen (to clear out the unmodified Video RAM), success! :)

Here's the patch if anyone's interested; I used Sword of Mana (U).

Pages: [1]