News: 11 March 2016 - Forum Rules

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 - Josephine Lithius

Pages: [1]
Alrighty, so… I've been trying to make some Game Genie™ codes for Super Mario Bros. (stand-alone version, for now).  Basically, I was fooling around with searching for values (as I often do), and I found out that Mario's "power" state is controlled by two addresses:
- $0754 controls whether he's actually Super ($00) or Small ($01)
  Just for laughs, set this to $02 and try bashing some blocks, sometime!  I chuckled, at least!
- $0756 controls whether he has zero hits (Small ($00)), one hit (Super ($01)),  or can toss fire (Fiery ($02))

Now, using using Tony Headstrom's helpful guide, I was able to make some codes that do… certain things.  Thusfar, I've made a "Power-ups Have No Effect" code, a "Get Power-Up, Can't Be Powered Down" code, and an "Always Small Mario Regardless of Power" code.  The lattermost is good for my purposes… but, I'd also like to make codes to set and lock Mario's initial state, so I can do things like "Start-and-Stay as Fiery Super Mario," which would be a two-line code.

I'm not very good at 6502 Disassembly, but I was able to track down and figure out the following through a combination of FCE Ultra X and a Wikibooks page on the subject:

Edit: Updated some value information and added another value I discovered.
Code: [Select]
[POWER-UP STATE ($0756, default value $00)]
_Reading From_
00:859F:AD 56 07  LDA $0756 = #$00                  ; Load value from $0756 (Mario power state), Game Start (Frame 9)
00:85FD:AD 56 07  LDA $0756 = #$00                  ; Load value from $0756 (Mario power state), Game Start (Frames 9, 27, 33)
00:B624:AD 56 07  LDA $0756 = #$??                  ; Load value from $0756 (Mario power state), CONSTANT (Frame 33 onward)

_Writing To_
00:90DC:91 06     STA ($06),Y @ $0756 = #$00        ; Make Y Set $0756 to $00 (Small Mario)?  Executed on title screen
00:85A5:8D 56 07  STA $0756 = #$00                  ; Set $0756 to $00 (Small Mario), executed on lives screen
                                                     (Temporarily removes power-up state to show Mario/Luigi player colors)
00:85B1:8D 56 07  STA $0756 = #$00                  ; Set $0756 to $00 (Small Mario), executed on lives screen after 85A5
                                                     (Restores power-up state back to what it was before the lives screen)

01:D842:8D 56 07  STA $0756 = #$01                  ; Set $0756 to $01 (Big Mario), executed on Super Mushroom pick-up
01:D82D:8D 56 07  STA $0756 = #$02                  ; Set $0756 to $02 (Fiery Mario), executed on Fire Flower pick-up
01:D936:8D 56 07  STA $0756 = #$00                  ; Set $0756 to $00 (Small Mario), executed when player hurt while powered-up
00:9274:8D 56 07  STA $0756 = #$00                  ; Set $0756 to $00 (Small Mario), executed after player death

[BIG/SMALL STATE ($0754, default value $01)]
_Reading From_
01:F091:AD 54 07  LDA $0754 = #$01                  ; Load value from $0754 (Mario big/small state), CONSTANT (Frame 33 onward)
00:B32B:AC 54 07  LDY $0754 = #$01                  ; Load value from $0754 (Mario big/small state), CONSTANT (Frame 35 onward)
00:B130:AD 54 07  LDA $0754 = #$01                  ; Load value from $0754 (Mario big/small state), CONSTANT (Frame 35 onward)
01:DC9F:AD 54 07  LDA $0754 = #$01                  ; Load value from $0754 (Mario big/small state), CONSTANT (Frame 35 onward)
01:DCB1:AE 54 07  LDX $0754 = #$01                  ; Load value from $0754 (Mario big/small state), CONSTANT (Frame 35 onward)
01:F091:AD 54 07  LDA $0754 = #$01                  ; Load value from $0754 (Mario big/small state), CONSTANT (Frame 35 onward)

_Writing To_
00:90DC:91 06     STA ($06),Y @ $0754 = #$01        ; Make Y Set $0754 to $01? (Small Mario), Game Start (Frames 3, 5)
00:9066:8D 54 07  STA $0754 = #$00                  ; Set $0754 to $00 (Big Mario), Game Start (Frame 32)
00:B265:8D 54 07  STA $0754 = #$00                  ; Set $0754 to $00 (Big Mario), executed on Super Mushroom pick-up
                                                     (6 frames after $D842 executes)
00:B265:8D 54 07  STA $0754 = #$01                  ; Set $0754 to $01 (Small Mario), executed on player hurt while powered-up
                                                     (15 frames atter $D936 executes)
00:9269:8D 54 07  STA $0754 = #$01                  ; Set $0754 to $01 (Small Mario), executed after pitfall death

I've tried changing this-and-that to NOP (do nothing) codes, which is how I got the codes I mentioned, and I've tried changing things to "set to this value," sometimes with ugly results like game crashes, so… I really have no idea what I'm doing wrong, at this point.  I feel like I'm probably missing data, despite my research, or just using the wrong commands, or something.  If anyone has any ideas (or, better yet… simple solutions!), let me know.

Thanks for reading!

ROM Hacking Discussion / Adding Patches to Link to the Past VT Randomizer
« on: February 04, 2018, 07:10:50 pm »
So, I have a problem.  My problem is that I'm either not understanding, or utterly screwing up, something in my Link to the Past randomized ROM.
See, what I'm trying to do is add Kazuto's "AST Dashing" patch to the randomized ROM.  The patch consists of changing the original Pegasus Boots code to call to code located in an empty place of the ROM – a place which is full of data, in the Randomized ROMs.  Now, this isn't the problem, as I've already found an empty place to put the extra call functionality.  The problem I'm encountering seems to be actually making it work properly.

The original Pegasus Boots code is located at $31195, in the randomized ROM.  I've replaced that part with the custom call code that Kazuto came up with.  In a normal, US Link to the Past ROM that's been patched with Kazuto's "AST Dashing" patch, the code, normally located at $3911B-$3912A, would make a call to secondary code, located at $3F89F-$3F8CF.  In the randomized ROM, I had to move that secondary code over to $3B526-$3B556 and change the JSR code in the first address' code from 22 9F F8 07 to 22 26 B5 07.  While this still allows for straight dashing, trying to change direction causes the game to crash.  So, what am I doing wrong?

Sidenote: If this isn't enough information, I can provide more code, but I'm trying to be considerate, to Kazuto, by not posting the entirety of their work, here.

Hoping for good news,

Originally "[Hyrule Magic] Ellipses Not Auto-Formatting in Changed Text"

This feels like a really dumb problem to have, but I genuinely have no idea why this would be happening... so here I am.

I'm doing a bit of text editing to A Link to the Past with Hyrule Magic.  Everything seems to be working just fine, so far; I've been able to give one particular NPC far more dialogue than it ever had with no noticeable negative impact on the game. (I'm guessing Hyrule Magic does text shuffling in the code kind of like Temporal Flux?)  However, one thing I did notice is that if I have a group of three periods in a row in an altered text field, instead of display the ellipses character with its 1-pixel-wide dots (…), it instead displays the 2-pixel-wide dots individually (...).

In the grand scheme of things, this really isn't a huge issue... but for me, personally?  It's driving me absolutely batty... and there doesn't seem to be any good reason for it!  Even copying text from other strings causes dots to not merge together.  Am I doing something wrong, or is Hyrule Magic somehow missing that feature?

Cheers and thank you!

Edit 1 (1:25 AM EDT): Did a little poking around in Hexecute.  It would appear that Hyrule Magic does not automatically implement "dictionary" and special characters, but does interpret them and convert them to standard text during the editing process.  I mean... okay, fair enough, I guess?  But you'd think it would be able to go both ways...

Edit 2 (1:36 PM EDT): Nothing like spreading a little misinformation...  Yes, Hyrule Magic does implement dictionary characters.  However, it does not implement ellipses manually.  Why?  I have no idea.  Probably an oversight on Sephiroth3's part...?  There may also be other characters it doesn't implement automatically, but I don't feel like digging around the code.  Frankly, I'm just happy it scoots text pointers around like it does...  Full freedom to make all the text I want* is pretty awesome.
* "All the text I want" within the free space of the ROM.

In any case, it looks like I'll have to manually insert ellipses using Hexecute for now, but I'm open to suggestion -- unless the suggestion is to use the Zelda Script Editor.  It doesn't run on this computer since I'm missing some crucial DLLs.

ROM Hacking Discussion / [IPS] Grossly-Inflated Patch Size? **RESOLVED?**
« on: February 15, 2017, 08:47:07 pm »
Formerly "[Lunar IPS] Grossly-Inflated Patch Size?"

So, I'm finally finishing up a Super NES ROM hack I've been putting off and I've run into a minor technical... well, not a "problem" so much as a "what the heck?"  For some reason, Lunar IPS seems to want to spit out a file that's about one-fourth the size (665 KB) of the actual ROM (2,048 KB).

The only things I've done to the ROM is edit a few data values and change a couple of graphics.  I can't see any reason for this huge file size happening other than maybe Lunar IPS doesn't handle edited, compressed graphics very gracefully?  I'm not really sure.  I do know, however, that Floating LIPS (and I would assume BEAT) spits out a file that's about 100-time smaller (6 KB in size) -- something I expected Lunar IPS to do, since it was doing that up until I started editing graphics.

Considering how very little I actually changed, I'm just... utterly baffled by what Lunar IPS is giving me to work with.  Would anyone happen to know why Lunar IPS is giving me an IPS file that's more than 100 times larger than the BPS file Floating LIPS provides?  I'd really prefer to use the IPS format, even though I know BPS is basically (vastly) superior in all but the most negligible of ways (popularity being one of them)... but the grossly-inflated file size for my patch is just absurd, considering just how little I've actually changed...

Thanks in advance.

Gaming Discussion / SNES/SFC ROM Standardization: Headered or Unheadered?
« on: November 16, 2016, 05:04:28 pm »
A recent discussion with a friend of mine got me thinking about how over the last 25-some years of Super NES/Famicom ROM dumping and emulation, we still somehow haven't really reached a universal consensus about ROM standardization.  Specifically, it seems like there's still a lot of debate of whether or not headered ROMs are the way to go, rather than unheadered ROMs.  Even here on this site, I see patches for both types of ROMs and, as far as I can tell, SNES/SFC ROMs are the only ones that have this problem.

So, like... what's the deal?  Why is there such confusion with Super ROMs?  And more importantly, what are the real pros and cons of having a header on a ROM?  As far as I've seen it seems easier to edit a ROM which doesn't have a header, despite the fact it usually only just shifts the data over about 1 KB.

It's just so odd that Super ROMs are the only ones I've ever seen where that mattered...  And since it does matter so much, why hasn't it ever been standardized?  It's a read head-scratcher...

ROM Hacking Discussion / [Chrono Trigger] Various Hacking Questions
« on: November 14, 2016, 02:01:58 pm »
For once, I'll be straight and to-the-point: I'm trying to make the Guardia Forest map in Chrono Trigger optional.  I find it kind of annoying you have to go through that place every single time you want to go to Guardia Castle.  It's just an unnecessary delay, to me.
However, the northern entrance/exit tile on the overworld map (the side facing the castle) apparently shares properties with several pieces of houses around the world and I don't know why.  I just know I don't want people to be able to literally walk through entire buildings when there's no reason to.

My Google-fu was not strong enough to find an answer for this and the existing manual for Temporal Flux is ridiculously out-of-date... so... is there a way, in Temporal Flux, to give a tile its own unique property?  I refuse to believe that it's impossible, considering what that program can do...  I'm just not clever enough to figure it out myself (and that really annoys me).

Edit: It'd help if... I said what game I was trying to edit...  *cough*

ROM Hacking Discussion / [Question] Custom Music in Mega Man 7?
« on: June 15, 2016, 05:04:11 pm »
Just a random curiosity here... has anyone figured out how to pop custom music into Mega Man/Rockman 7 yet?  And has there been any interest in actually doing so?  I think it would be pretty neat to be able to play a Mega Man 7 ROM hack that has, as a random example, full-length versions of Heatman and Snakeman's themes, or even music from other games.

This isn't a request, by the way.  I'm just wonder if this is something that has been done (and preferably documented).  I can't say I looked very hard to see if it was, though...

Hello again!  I have another simple question for people in-the-know.

Is it possible to swap Trevor out as the "main character" of Castlevania III?  Like, for example, I want to have a version of the game where the main character is Grant and his "spirit helper" is Alucard, with the ability to hit Select to swap between just those two.  It feels like it should be simple enough to do, but I haven't looked into it, myself...

Also of-note, I also want to swap Trevor our of the cutscenes, as well, so one of the side-characters (again, Grant) will be the one meeting and greeting the others.  I don't necessarily care about adding Trevor as a secondary character at the moment, though.

Thanks in advance for any help!

Newcomer's Board / Editing Pokémon Gen I Battle Sprites? **ANSWERED**
« on: January 10, 2016, 08:43:38 pm »
I'm sure this has been asked twenty-million times, but... is there any easy way to edit the battle sprites (Pokémon, trainers, back-sprites) in Pokémon Generation I games?  I've searched all over Google and the most I could find was a link to a game-specific, web-based graphic (de?)compressor tool that doesn't exist anymore.  I know the battle graphics are compressed in some way and I know people have been able to decompress them to make some absolutely wonderful ROM hacks, but there doesn't seem to be any really good documentations or tutorials to do so, as far as I can find... and, something I find stranger... no utilities specifically for this!

So... any help here would be greatly appreciated.  I don't expect any easy answers, but any definite answer would be greatly appreciated.

Thanks in advance!

Edit: The question has been answered and I am on my way to hacking this puppy.  Thanks, Chaos Rush (and Mateo, if you happen to stumble upon this thread)!

Hello again.  I'm still working on a Chrono Trigger ROM hack... and I still need some help.  Rather than fix something I broke however, I need to break something that isn't broken.

At the beginning of any given battle, if Ayla is in your party, the game checks her current level and automatically assigns one of five weapons: Fist (25% crit), Fist (30% crit), Fist (35% crit), Iron Fist (May cause "Chaos"), or BronzeFist (9,999 damage on crits).  It doesn't matter what she has equipped in her weapon slot before combat.  If she has anything other than the weapon that's appropriate for her level equipped, the game automatically changes it over.

I want to disable that.

In my ROM hack, I want to change some of her fist weapons into equippable items, see... and if the game is automatically changing her weapon at the start of combat, I can't make that happen.  I don't know my way around the game to poke around at random hex values and try and "luck" my way to breaking this, but I figured maybe someone here has dabbled in the battle routine code enough to know how to "break" Ayla's auto-equip code.

Any help would be greatly appreciated.  Thanks!

Hello!  I need some help with a personal project.

A while back, I decided to combine two Chrono Trigger ROM hacks together: Maelstrom's "Level Zero" and the Kajar Labs/Chrono Compendium "Retranslation" hack.  To my pleasant surprise, the two worked perfectly together!  ... or rather, almost perfectly...  Apparently, one hack or another nudged some text strings around.  Specifically, the text strings for treasure chests.  Rather than saying "Got 1 [item]!" or "Got [item]!", the merged-patch ROM returns "Go[item]     !". (Edit: The giant gap between "Go/Got" and the item is apparently an artifact of the Retranslation patch itself...) Money chests and empty chests both return completely blank strings.  Item descriptions also take from the Retranslation hack, but use the Level Zero values (such as Potions saying "restores 50 HP" when they actually restore 150 HP).

So anyway, this was all pretty negligible.  The game works perfectly aside from this and I've been having a blast experiencing the enhanced challenge combined with a superior translation.  Recently however, I decided to look into fixing the broken chest strings and item descriptions myself, since a friend of mine is interested in experiencing "Level Zero Retranslation".
Everything else smoothly when I popped open the ROM in Temporal Flux.  I could edit everything just fine and it saves perfectly.  Except... in doing so, I seem to have completely removed the special translator intro screen.

My question: Is there a way to edit strings in the ROM without removing the special screen(s) added by the translators?  I think there's two of them total, but I'm not 100% sure on that.

Thanks in advance!

Edit: This was put in the Newcomer's Board because I figured it was something simple like a misplaced byte or something.

Pages: [1]