Sonic and Sega Retro Message Board: trykaar - Viewing Profile - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help

Group:
Member: Members
Active Posts:
14 (0.05 per day)
Most Active In:
Engineering & Reverse Engineering (8 posts)
Joined:
26-September 14
Profile Views:
2434
Last Active:
User is offline Jan 24 2015 01:51 AM
Currently:
Offline

My Information

Age:
Age Unknown
Birthday:
Birthday Unknown
Gender:
Female Female
Location:
St. Louis, MO

Contact Information

E-mail:
Private
Website:
Website  http://https://github.com/trykaar

Previous Fields

Project:
Sega Roguelike Exploration/Disassembly
National Flag:
None
SA2 Emblems:
2

Posts I've Made

  1. In Topic: I picked up the Sega Genesis Classic Game Console with the 80 built in

    24 December 2014 - 11:57 PM

    I picked up the handheld version with SD card slot from Bed Bath and Beyond recently, list price there is $40 but 20% off coupons are quite common. I'm pretty happy with it for the $30 or so I paid overall; it's less worrisome and more convenient to take out than my Nomad and cheaper than an Everdrive.

    The sound quality is fairly poor as would be expected, there is no save capability, and there is some ghosting on the screen that is more or less noticeable depending on what you're doing (I've noticed it most on intro cutscenes, not as much during actual gameplay). However, it feels a lot more solidly built than I would have expected, the battery life is pretty good, and I've found the SD card compatibility to be quite good with the games and hacks I've tried- the only one that hasn't worked of those I've tried is Game no Kanzume Otokuyou, it get to the title screen but won't go any further. There is no "mode" button (though Golden Axe II that's included seems to work fine) and no "reset" button. One minor disappointment is that it doesn't play SMS games (or 32X games), but that's not an advertised feature so I didn't really expect it to.
  2. In Topic: Dragon Crystal (SMS) Disassembly and Exploration

    16 December 2014 - 05:03 PM

    Hello everyone! It's been quite a while since my last update.

    I'm continuing to focus on the game mechanics surrounding items and monsters. I've converted a number of set values to constants (eg monster and item IDs, game messages) and discovered the following data tables, which are now broken out and editable in the disassembly:



    Most of the consumable items' behavior is contained in the Item Action Table I mentioned in my last post. The Item Action Table contains actions that are executed when rings are equipped as well, which is all there is for some rings, but most of the special effects for equippable items are spread throughout the battle system in checks for whether a particular piece of equipment is equipped- for example, the armor rusting routine checks to see if a shield ring is equipped, and if so, does not rust the armor. (This effect of the shield ring is, I believe, previously undocumented!)

    I am going through and addressing most of the direct item references with item constants, but the programmers often take advantage of the specific numbers and sequential order of IDs (eg see checks for swords effective against specific monsters having IDs $0C-09 here), so there are going to be a number of indirect references to document.

    There is still much to be deciphered about items as well- how items and monsters are randomly placed on the map (I believe that a lot of this takes place in the jump table currently named "JumpTable4"), targeting, thrown items (I believe that the jump table currently labeled JumpTable6 contains this logic), identification of unidentified items, and the cursed item mechanism; cursed items are denoted by the high bit of the item ID being set, but I haven't discovered where this is set yet, I only see where it's read and cleared eg by the bless scroll. More remains about monsters too- placement on the map, behavior, graphics selected, HP.

    Little by little, work progresses!
  3. In Topic: Dragon Crystal (SMS) Disassembly and Exploration

    26 October 2014 - 06:22 PM

    Major progress, everyone!

    I've located the statistics for weapons and armor and the logic for the scroll, rod, potion, and ring items! (Special effects of weapons, armor, and rings seem to be handled at the place they affect behavior, though, so for the rings most of the behavior is just displaying the correct message when the ring is equipped, and only armor statistics are here so far.)

    This makes it very easy to edit items in the game to swap their behavior with other items or change weapon/armor statistics! Here is a "proof of concept" ROM with the following changes:

    - The Leathersuit armor has been replaced with the "Ghost Mantle," which offers no defense bonus but a large bonus to evasion
    - The typo "You dodger the attack!" has been corrected to "You dodge the attack!"
    - The Minheal potion has been replaced with the "Boom Potion," which behaves as the thunder rod, damaging enemies in the room with you
    - The slime enemy has been imported from the Game Gear version- different graphics and name changed to "Slime" instead of "Ooze" (I did not alter the higher level Ooze enemies' names, but their graphics should also have changed)
    - New, less eye-searing palette for the flower field level, with yellow flowers instead of blue (as seen in the screenshot last post)

    The weapon and armor statistics are very simple tables that list the hit and power of each weapon and the evasion and armor class of each piece of armor. Just adjust the stats here, edit the name if you so wish in items/names, compile, and go!

    To create the Ghost Mantle:

    In items/behavior/armor_statistics.asm, simply change

    .db $08 $02		; Leathersuit
    

    to

    .db $20 $00		; Leathersuit
    


    and edit the name in items/names/armor.asm like so

    LightArmorName2:
    	.db $0B
    	.asc "LEATHERSUIT   "
    

    to

    LightArmorName2:
    	.db $0C
    	.asc "GHOST MANTLE  "
    

    (Note the change to the initial byte for length!)

    The item behavior takes a little more explanation- the IDs of items as stored in your inventory in RAM are offsets into a table of item behavior for each item, and the item behaviors in this table for each item are themselves offsets into a jump table to select the right routine for each item.

    Breaking it down a little...

    These items are stored in the player's inventory in the following locations in memory:

    $C910-$C917 	Scrolls
    $C918-$C91F 	Rods
    $C920-$C927 	Potions
    $C928-$C92F 	Rings
    

    Each item has an ID in the following range:

    $20-$2F	Scrolls
    $30-3F 	Rods
    $40-4F 	Potions
    $50-5F 	Rings
    

    For example, here are the scrolls:

    $20 	Blade Scroll
    $21 	Shield Scroll
    $22 	Norust Scroll
    $23 	Bless Scroll
    $24 	Map Scroll
    $25 	Shift Scroll
    $26 	Mad Scroll
    $27 	Magi Scroll
    $28 	Gas Scroll
    $29 	Ghost Scroll
    $2A 	Dragon Scroll
    $2B 	Summon Scroll
    $2C 	Blank Scroll
    $2D 	Potion Scroll
    $2E 	Unused
    $2F 	Unused
    

    If you edit memory to place $20 into the location $C910, you will have a Blade Scroll in your first scroll inventory slot.

    When you go to use a scroll, the game stores the item ID in $C931, the current item slot, and uses the item IDs (minus $20, as weapons occupy the range $00-0F and armor occupies the range $10-1F in IDs) as offsets into a behavior table:

    ; Scrolls
    .db $00 ; Blade Scroll
    .db $01 ; Shield Scroll
    .db $02 ; Norust Scroll
    .db $03 ; Bless Scroll
    .db $05 ; Map Scroll
    .db $06 ; Shift Scroll
    .db $07 ; Mad Scroll
    .db $0A ; Magi Scroll
    .db $0B ; Gas Scroll
    .db $0C ; Ghost Scroll
    .db $0D ; Dragon Scroll
    .db $09 ; Summon Scroll
    .db $0E ; Blank Scroll
    .db $30 ; Potion Scroll
    .db $FF
    .db $FF
    

    These values are actually offsets into the jump table that governs item behavior, which I've labeled "ItemActionTable." It looks like this:

    ItemActionTable:
    	.dw BladeScrollAction     ShieldScrollAction   NorustScrollAction   BlessScrollAction
    	.dw NothingHappenedAction MapScrollAction      ShiftScrollAction    MadScrollAction
    	.dw FreezePotionAction    SummonScrollAction   MagiScrollAction     GasScrollAction
    ...
    

    So, let's go through acquiring and using a Map Scroll:

    1. Map Scroll is picked up and stored in the first item slot: $24 written to $C900
    2. Map Scroll is used: $24 stored in $C931, the current item slot
    3. Behavior lookup for Map Scroll: $24 - $20 = $04, fifth offset into the item behavior table, which yields behavior $05
    4. Call routine for Map Scroll: Item Table starting point + $05 gives us the sixth entry of the Item Action Table, which is... MapScrollAction!

    Switching object logic turns out to be rather simple. To change the "Minheal Potion" to the "Boom Potion":

    In items/behavior/item_action_offsets.asm, simply change

    .db $19		; Minheal Potion
    

    to

    .db $11		; Minheal Potion
    

    (note $11 is the offset used for Thunder Rod!) and edit the name in items/names/potions_identified.asm like so

    IdentifiedPotionName1:
    	.db $0e
    	.asc "MINHEAL POTION"
    

    to

    IdentifiedPotionName1:
    	.db $0B
    	.asc "BOOM POTION   "
    


    (Note the change to the initial byte for length!)

    I recommend Dammit9x' Dragon Crystal Shrine as a good reference for the standard stats and behavior of weapons and items. Have fun!
  4. In Topic: Dragon Crystal (SMS) Disassembly and Exploration

    21 October 2014 - 02:00 PM

    Hello everyone,

    I've not had terribly much to update lately- it's been mostly quieter, less interesting work on the disassembly front, but I have been messing around a bit with palette and graphics hacking:

    Posted Image

    Here's a new palette for the flower field level, with orange flowers and less... eye-searing grass. I've also replaced the "ooze" enemy with the slime enemy from the Game Gear version- both versions use Phantasy Star RLE compression, so I was able to extract from one and insert into the other with Master Tile Converter. (The reverse does not work, as the ooze tiles take up more space- the graphics are corrupted.) The sprite palette was not even altered- the slime looks pretty much just as it does in the Game Gear version with the existing palette.

    A few translation/localization curiosities, regarding the weapons:

    - The "I killed myself" message is used in the game, if the player is killed by recoil from using the Death Blade, a powerful sword which sometimes does damage back to the player. In the Japanese version, this sword is the "Harakiri Blade," and the death message is "Defeated by committing seppuku." (Source, the top item on the page.)

    - The sword called Masamune in the English GG localization is a reasonably powerful sword for the mid-game, but it does no damage to slimes/oozes. According to legend, Masamune's blades were holy swords who did no damage to the "innocent and undeserving." However, in the Japanese version, this sword is called Zantetsuken, the "iron-cutting sword," after the sword wielded by Goemon in the Lupin III anime- Zantetsuken is capable of cutting through anything... except konnyaku jelly. Quite a difference in tone! (In the SMS version, only released in English, this sword is just called "Great Sword.")

    - The "Gladius" (GG)/"Flamberge" (SMS) sword in the English localization is the "Laconia Sword" in the Japanese version, after the Laconia Sword in Phantasy Star. (There's a Laconia Armor in the Japanese version too!)

    - The Japanese version also has "Excalibur," which one would think would be an easily recognizable reference for a Western audience, but this sword was renamed to "Flamberge" (GG)/"Rune Blade" (SMS) in the localization. However, the English version of Fatal Labyrinth does have a sword named Excalibur.

    I've started a Google Site to keep track of things like this- the list of Dragon Crystal weapons with Japanese name, translation, and both localizations is here, and I'll probably add the other types of items to it as I get time.

    Possibly the most interesting thing I've discovered is that the monster names seem to be different between Dragon Crystal and Fatal Labyrinth even in the Japanese version. The red pillbug-like enemy that shoots projectiles is Scorpion in the Japanese version of Dragon Crystal GG, but Worm in the Japanese version of Fatal Labyrinth. In fact, despite starting from the same character designs and graphics (designs credited to Naoto Ohshima, "Azarashi," and "Sato (Tokumei)" in Fatal Labyrinth and uncredited in either Dragon Crystal), the games seem to have diverged a lot despite both being roguelikes.

    Fatal Labryinth includes gameplay features like traps in the levels (pits that send you back a level and alert monsters to your presence) and way more (and more frustrating) hidden exits, a wider variety of equipment (axes and spears in addition to swords, shurikens and certain rings that are meant to be thrown rather than equipped, and helmets in addition to armor) but fewer consumables (Dragon Crystal has eg thirteen types of potions where Fatal Labyrinth has only seven). Fatal Labyrinth (the later cartridge release) also has the town at the beginning filled with NPCs where there is no such thing in Dragon Crystal (though it's possible there was such a feature in a beta version with NPCs appearing in the dungeon- that review seems more like the reviewer is confused about how to play the game, though).

    View PostOverlord, on 14 October 2014 - 01:22 PM, said:

    What little we know about Sonic Cafe probably has here as a good start.


    Thanks! The page lacks anything about the non-Sonic Sonic Cafe titles, though, and I didn't see any corresponding page at Sega Retro. I tried signing up for a Sega Retro wiki account to try to add one and put in some details from the Sonic Cafe website I linked above, but I got an "Account Creation Error, Incorrect or missing confirmation code" and could not create an account. (Perhaps I'm entering an incorrectly formatted answer for the CAPTCHA questions? I tried "Sega Genesis" and "Genesis" for the question about American name of the Mega Drive and "Mega Drive" and "Sega Mega Drive" for the question about the international name of the Genesis...) Is it because I'm still a trial member, maybe?
  5. In Topic: Alternate versions of classic games in new releases

    14 October 2014 - 12:47 PM

    There were two Game no Kanzume volumes released at retail for the Sega CD as well, Game no Kanzume Vol. 1 and Game no Kanzume Vol. 2. The Labyrinth of Death/Fatal Labyrinth version included in that release in Vol. 2 appears from a gameplay standpoint to be the same as the version released overseas as Fatal Labyrinth (which I believe will play in Japanese in a Japan-region console)- it is significantly enhanced over the Sega Game Toshokan version. The Game no Kanzume Vol. 2 version of Labyrinth of Death, however, has CD audio for the open and ending themes and no music in-game. The CD seems to contain ROMs for the individual games as well, but I don't believe they're full ROMs- I have plans to look into these for my Fatal Labyrinth research, but I haven't had a chance to look into it much.

    There was some brief discussion of Sonic Eraser over in the Supreme Topic of Other Knowledge; ValleyBell noted there that all of the Seganet ROMs he's checked have the same sound driver and ROM header, and possibly more:

    View PostValleyBell, on 07 October 2014 - 03:42 PM, said:

    In all Seganet ROMs I checked the first 128 KB matched exactly (except for the checksum). It's probably some sort of generic Seganet ROM loader. (That has its own SMPS Z80 driver + data.)


    I suspect that the Sega Game Toshokan cartridge was something of a loader or shell for the Seganet game data, which would include a standard sound driver, and all of the Seganet games shared it. I would suspect that both Game no Kanzumes act as a loader that provides this same expected data- the CD versions of Game no Kanzume would have a CD audio player (but potentially no other sound capabilities- Labyrinth of Death in Vol. 2 does not have sound during gameplay) and the Sega Channel "economy" version would probably have something like the original sound driver and data? It may be possible to look for SMPS since it's a known quantity, and see if there is one version included or one per each game, to figure out how this works.

    For what it's worth, I found while reading the Japanese Wikipedia article (Google Translate) on the Game no Kanzume series that these Seganet games were also included as extras in Segagaga for the Dreamcast.