Assorted new things:
- Started working on a help screen to document some features of the tool. Not everything is here yet.
- Added an "Options" text box to copy/paste the whole set of options in the lower part of the window.
- Tweaks to item desirability factors with some input from SilentSigil and others.
- Redesign the way I scale item values for "item quality" when "Anything" is selected, since some items being included didn't even have a value to begin with (like Dual Blade).
- Fix issue where included cursed items would lose their cursed-ness.
- Tooltips for some things where they were missing.
- Modify the dialogue of the guy who talks to you when you start gift mode, to clarify that it's a (de)randomized ROM being run.
- Add option to randomize your party rather than allowing manual party selection.
Download: https://dl.dropboxusercontent.com/u/19968993/AncientCaveDerandomizerv1.4.exe
Mop's Things
Thursday, June 2, 2016
Thursday, May 5, 2016
Illusion of Gaia - "Press X To Run" Hack v1.2
Finally had a chance to (hopefully) fix this.
Once I got around to testing, I found that 1.1 had an issue where you could run straight up sloped tiles. 1.2 fixes it by checking a value at $09AE that seems to indicate you're standing on one, at the start of the new subroutine:
AD AE 09 LDA 09AE
29 00 10 AND 1000
D0 6C BNE end
Once I got around to testing, I found that 1.1 had an issue where you could run straight up sloped tiles. 1.2 fixes it by checking a value at $09AE that seems to indicate you're standing on one, at the start of the new subroutine:
AD AE 09 LDA 09AE
29 00 10 AND 1000
D0 6C BNE end
Thursday, April 21, 2016
SNES Harvest Moon Time Hack v1.1
This, too, had an issue that I found while screwing around.
Without the +1 hour on map change, it's now possible to enter the north forest map at 6 AM, where previously it was not. At 6 AM, this map has no palette and appears solid black.
Now, instead of removing the hour increment code entirely, I jump to a new subroutine that will only increment it if it's currently 06.
22 00 80 BC JSL BC8000
at 1E0000:
AF 1C 1F 7F LDA $7F1F1C
C9 06 CMP #06
D0 06 BNE [end]
A9 07 LDA #07
8F 1C 1F 7F STA $7F1F1C
end:
6B RTL
https://dl.dropboxusercontent.com/u/19968993/hm_longer_days_no_intro_1_1.ips
Without the +1 hour on map change, it's now possible to enter the north forest map at 6 AM, where previously it was not. At 6 AM, this map has no palette and appears solid black.
Now, instead of removing the hour increment code entirely, I jump to a new subroutine that will only increment it if it's currently 06.
22 00 80 BC JSL BC8000
at 1E0000:
AF 1C 1F 7F LDA $7F1F1C
C9 06 CMP #06
D0 06 BNE [end]
A9 07 LDA #07
8F 1C 1F 7F STA $7F1F1C
end:
6B RTL
https://dl.dropboxusercontent.com/u/19968993/hm_longer_days_no_intro_1_1.ips
Illusion of Gaia - "Press X To Run" Hack v1.1
Well, I found an issue already. I wasn't checking a set of bits that indicate certain controls should be frozen. Those bits are now checked with a few additional instructions at the beginning of the subroutine I added:
AD 5A 06 LDA 065A
29 00 0F AND #0F00
D0 48 BNE to [end]
This skips setting the running velocities if any of the directional keys are frozen.
Without this check I was able to run around during some events that were supposed to freeze me in place, and everything got way out of sync.
https://dl.dropboxusercontent.com/u/19968993/iog_x_to_run_1_1.ips
AD 5A 06 LDA 065A
29 00 0F AND #0F00
D0 48 BNE to [end]
This skips setting the running velocities if any of the directional keys are frozen.
Without this check I was able to run around during some events that were supposed to freeze me in place, and everything got way out of sync.
https://dl.dropboxusercontent.com/u/19968993/iog_x_to_run_1_1.ips
Illusion of Gaia - "Press X To Run" Hack
I heard a couple people on Twitch request something like this a while back, so I thought I'd give it a go. IoG has running, but you need to double-tap the direction to trigger it, which can get a little old after a few times. The x button isn't used for anything in IoG, so it was free to assign to something new.
This one is a little more involved than some of my other recent hacks, since some new code had to be added.
https://dl.dropboxusercontent.com/u/19968993/iog_x_to_run_1_0.ips
To be used with Illusion of Gaia (U) [!].smc. Not tested with other versions.
Details:
$82/80B6 AD 60 06 LDA $0660 [$81:0660] A:0000 X:0000 Y:006C P:envmxdIZC
$82/80B9 29 00 0F AND #$0F00 A:0000 X:0000 Y:006C P:envmxdIZC
$82/80BC 8D 5E 06 STA $065E [$81:065E] A:0000 X:0000 Y:006C P:envmxdIZC
This one is a little more involved than some of my other recent hacks, since some new code had to be added.
https://dl.dropboxusercontent.com/u/19968993/iog_x_to_run_1_0.ips
To be used with Illusion of Gaia (U) [!].smc. Not tested with other versions.
Details:
$82/80B6 AD 60 06 LDA $0660 [$81:0660] A:0000 X:0000 Y:006C P:envmxdIZC
$82/80B9 29 00 0F AND #$0F00 A:0000 X:0000 Y:006C P:envmxdIZC
$82/80BC 8D 5E 06 STA $065E [$81:065E] A:0000 X:0000 Y:006C P:envmxdIZC
This code masks the directions off of the controller input value (which was earlier pulled from its mapped location of $4218) corresponding to the directional values and stores it off. This isn't terribly relevant to this modification except I've chosen this point to inject a bit of new code since this is something that runs as part of the character control code.
That code has been replaced by a jump to a new subroutine:
22 00 00 E0 JSL E0:0000
EA EA nothing
With the new subroutine added at the end of the ROM to handle X being pressed while direction keys are also held:
29 00 0F AND 0F00 (replaced code)
8D 5E 06 STA 065E (replaced code)
AD 18 42 LDA 4218 read controller inputs
29 40 00 AND #0040 and with X mask
F0 40 BEQ to [end]
AD 60 06 LDA 0660 .. 0100 for right held, 0200 for left, 0400 for down, 0800 for up
29 00 01 AND #0100 and with right mask
F0 08 BEQ to [leftcheck]
A9 03 00 LDA #0003
8D B2 09 STA 09B2
80 30 BRA to [end]
leftcheck:
AD 60 06 LDA 0660 .. 0100 for right held, 0200 for left, 0400 for down, 0800 for up
29 00 02 AND #0200 and with left mask
F0 08 BEQ to [downcheck]
A9 FD FF LDA #FFFD
8D B2 09 STA 09B2
80 20 BRA to [end]
downcheck:
AD 60 06 LDA 0660 .. 0100 for right held, 0200 for left, 0400 for down, 0800 for up
29 00 04 AND #0400 and with down mask
F0 08 BEQ to [upcheck]
A9 03 00 LDA #0003
8D B4 09 STA 09B4
80 10 BRA to [end]
upcheck:
AD 60 06 LDA 0660 .. 0100 for right held, 0200 for left, 0400 for down, 0800 for up
29 00 08 AND #0800 and with up mask
F0 08 BEQ to [end]
A9 FD FF LDA #FFFD
8D B4 09 STA 09B4
EA EA BRA to [end] (this one is not really needed, we're already here.. keep these here for easy sizing)
end:
AD 60 06 LDA 0660
29 00 0C AND #0C00 either vertical direction held? no? zero out the 09B4
D0 06 BNE [hcheck]
A9 00 00 LDA #0000
8D B4 09 STA 09B4
hcheck:
AD 60 06 LDA 0660
29 00 03 AND #0300 either horizontal direction held? no? zero out the 09B2
D0 06 BNE [end2]
A9 00 00 LDA #0000
8D B2 09 STA 09B2
end2:
6B RTL
In short, what this bit of new code is doing is the following:
If "x" is held
If "right" is held
Set Will's horizontal running velocity to 3
If "left" is held
Set Will's horizontal running velocity to -3
If "down" is held
Set Will's vertical running velocity to 3
If "up" is held
Set Will's vertical running velocity to -3
If neither "up" nor "down" are held
Set Will's vertical running velocity to 0
If neither "left" nor "right" are held
Set Will's horizontal running velocity to 0
Return from subroutine
Note that setting the running velocity ($7E09B2, $7E09B4) to non-zero automatically triggers the game to use the running animation and move Will in whichever direction. Setting it to zero stops Will's run. All this code is doing is triggering that existing code in a different way.
This has not been tested with the full game yet! There may be places where it breaks. Particularly, spots where Will is forced in a certain direction still need to be tested. Feel free to report issues here and they will be fixed.
This has not been tested with the full game yet! There may be places where it breaks. Particularly, spots where Will is forced in a certain direction still need to be tested. Feel free to report issues here and they will be fixed.
SNES Harvest Moon Time Hack
Time moves way, way too fast in this game. This hack needed to be made.
https://dl.dropboxusercontent.com/u/19968993/hm_longer_days_no_intro_1_0.ips
To be used with Harvest Moon (U).smc. Not tested with other ROMs.
Details:
$82/803B AF 1D 1F 7F LDA $7F1F1D[$7F:1F1D] A:0000 X:0220 Y:0002 P:envMxdiZC
$82/803F 1A INC A A:0003 X:0220 Y:0002 P:envMxdizC
$82/8040 8F 1D 1F 7F STA $7F1F1D[$7F:1F1D] A:0004 X:0220 Y:0002 P:envMxdizC
$82/8044 C9 0F CMP #$0F A:0004 X:0220 Y:0002 P:envMxdizC
This code increments the game "minutes" and compares them against 0x0F. If it matches, the hour gets incremented. This hack changes the 0x0F to 0x7F to effectively slow the progression of hours by a factor of 8.
$80/9CF7 8F 1C 1F 7F STA $7F1F1C[$7F:1F1C] A:440D X:0220 Y:0002 P:envMxdizc
This block of code increments the hour directly when you transition between certain maps. This has been replaced by no-ops.
Also, you know what else is annoying? The amount of people it makes you talk to on a new game before you can even play. Let's just make that whole thing go away.
$84/BF69 A7 72 LDA [$72] [$7F:1F74] A:EB0B X:0000 Y:0032 P:eNvmxdizc
$84/BF6B 25 7E AND $7E [$00:007E] A:0000 X:0000 Y:0032 P:envmxdiZc
$84/BF6D D0 07 BNE $07 [$BF76] A:0000 X:0000 Y:0032 P:envmxdiZc
Changing this BNE (0xD0) to an unconditional BRA (0x80) skips this check and you can just talk to the one dude to immediately go back to your ranch and start the game. It even gives you the watering can and all the other crap you're supposed to get from talking to people.
https://dl.dropboxusercontent.com/u/19968993/hm_longer_days_no_intro_1_0.ips
To be used with Harvest Moon (U).smc. Not tested with other ROMs.
Details:
$82/803B AF 1D 1F 7F LDA $7F1F1D[$7F:1F1D] A:0000 X:0220 Y:0002 P:envMxdiZC
$82/803F 1A INC A A:0003 X:0220 Y:0002 P:envMxdizC
$82/8040 8F 1D 1F 7F STA $7F1F1D[$7F:1F1D] A:0004 X:0220 Y:0002 P:envMxdizC
$82/8044 C9 0F CMP #$0F A:0004 X:0220 Y:0002 P:envMxdizC
This code increments the game "minutes" and compares them against 0x0F. If it matches, the hour gets incremented. This hack changes the 0x0F to 0x7F to effectively slow the progression of hours by a factor of 8.
$80/9CF7 8F 1C 1F 7F STA $7F1F1C[$7F:1F1C] A:440D X:0220 Y:0002 P:envMxdizc
This block of code increments the hour directly when you transition between certain maps. This has been replaced by no-ops.
Also, you know what else is annoying? The amount of people it makes you talk to on a new game before you can even play. Let's just make that whole thing go away.
$84/BF69 A7 72 LDA [$72] [$7F:1F74] A:EB0B X:0000 Y:0032 P:eNvmxdizc
$84/BF6B 25 7E AND $7E [$00:007E] A:0000 X:0000 Y:0032 P:envmxdiZc
$84/BF6D D0 07 BNE $07 [$BF76] A:0000 X:0000 Y:0032 P:envmxdiZc
Changing this BNE (0xD0) to an unconditional BRA (0x80) skips this check and you can just talk to the one dude to immediately go back to your ranch and start the game. It even gives you the watering can and all the other crap you're supposed to get from talking to people.
Wednesday, April 13, 2016
Super EDF Volume Hack
Something I've been wanting to look at for a while.
This drops the volume of a couple sound effects in the SNES game Super Earth Defense Force that were annoyingly loud.
Comparison video. First ~two minutes are original, next two are with the patch.
Patch here - or apply manually by changing 42DE3 from FF to A0, and 42E18 from FF to C0. Meant for "Super Earth Defense Force (U) [!].smc" and has not been tested with other versions.
This drops the volume of a couple sound effects in the SNES game Super Earth Defense Force that were annoyingly loud.
Comparison video. First ~two minutes are original, next two are with the patch.
Patch here - or apply manually by changing 42DE3 from FF to A0, and 42E18 from FF to C0. Meant for "Super Earth Defense Force (U) [!].smc" and has not been tested with other versions.
Subscribe to:
Posts (Atom)