Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
im curious about the use of marine too. there is no reason to conserve it since you dont use for the rest of the level and it gets automatically refilled at the end of the level.
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
sorry, but I dont have much else to put up, when I finish chp 3 I will update. I just haven't been able to work on this run. I assure everyone that I haven't lost any motivation and fully intend to finish it, school is just kicking my ass right now (im in my final year of my masters degree). There is really no way I will have any time to work on it until the end of the month. I'm as eager as you guys about seeing this run finished!
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
It is faster to buy the herb(s) in garinham instead of brecconary.
I'll have more comments later but it desyncs at the 1st metal slime fight so i'll have to find the proper rom
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
I dont think I like th secrecy in this case. You are only "shooting yourself in the foot" by not posting. There are some very knowledgeable people here that could help you figure out whats going on and maybe even find some stuff that you may have overlooked.
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
as far as getting 24,000 might be possible getting the right enemy drops.
the site I posted previously has this
http://www.woodus.com/den/games/dw2nes/monsters.php
that lists all the enemy drops. There are some premium items possible including the sword of destruction which will get you half way there
as for getting criticals in your savestate run use a game genie code that gives you nothing but criticals, since you not recording there is no reason to waste time trying to manipulate them
as for whether you can get the iron spear from the boss siber lion, my guess is that you can. but to be sure, find a game genie code that makes any enemy who can drop, drop and item.
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
I didn't even think of cursed items (for my run as well)!! with luck manipulation the cursed affect wouldn't be a problem.
as for the falcon sword: of course it would be worth it! Assuming you are doing criticals on every attack (unless of course for some reason you can't get criticals on bosses in this game).
I forgot that wings can be used to go to other towns (for some reason I thought it was like dw1 and only returns to the original castle).
Optimal use of wings will be very important and can potentially save huge amounts of time.
assuming that you will be able to get cricials on all bosses I would estimate this game can be done in about an hour
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
I'm glad to see that you are seriously attempting this run.
I highly recommend you record your progress in an .fcm even though it isn't an optimized run at all. by replaying you can get more ideas and possibly catch things you would have otherwised missed. You should definately make a test run of a game before you attempt an optimized on, especially in an RPG as complicated as this. but at least make a movie and select record from "now" so that you can post it, so that I and others might be able to give comments.
one thing you want to look into is whether button presses affect the random outcome. (Read my DW4 posts for more info). This can give you significantly more options, and reduce the amount of wait time when trying to get random events.
The crest glitch thing looks very interesting but I have no idea how that might happen, it might be a result of bumping the console and getting glitched results (which in unfortunately un-reproducable on an emulator)
Also, look into what random enemy drops. You might be able to get some essential items, or some things to sell. I know bullwongs leave wizards rings which should be useful
this sight should be very helpful:
http://www.woodus.com/den/games/dw2nes/
also, do you think that the lottery would be helpful?
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
well I finally got over the hudle and completed the chamelon fight. I successfully killed off brey and cristo which saved my about 30 seconds in level ups (and about another 30-60 seconds later on). I don't plan on updating my WIP until it is finished though. But I will post progress reports from time to time
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
the slowest game would have to be dragon warrior since you have to talk to the king, get the treasure chest, open the door and walk outside, and even then it will take a while to be killed by a slime
for fastest death - zanac might be a good candidate
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
Making a luckbot wouldn't be that hard, heres specifically what I would need
from the current point in the movie (or particular savestate), the bot would need to systematically check every combinations of button pushes of all the buttons for 5 frames. After each combination it would check to see if a critical occured, if so then stop (and hopefully display which button combo it used). If after checking all possible all possible combination and still no critical it would notify that it was done and failed, that way I could advance 1 frame and re-run the luckbot.
the combination of button would need to be all button except start. and only 1 button pushes at a time. The 1st frame should always be a button push, but the remaining frames could be null
The advantage of the bot over a battle simulator is that all it needs to do is check the ram address that tells when a critical hit has occured rather than trying to reconstruct the process.
Also in the future, changing the ram address that it checks, The bot could be changed to find treasure drops.
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
Silas wrote:
I could help with or do the programming if needed (if you say you already got the ram offset and values, I think it would be pretty easy to do).
What do you actually need? Something to play the game until a critical hit or two is done (bisqbot) or something that will tell you which button to press and when to get a critical (easier to do)?
YYEESS!! please do
either method will be fine, all I need is for it to a) play the game until 1 critical hit happens or tell me which buttons to push to get the critical
This is some info someone emailed me:
For my terrific blows GG code, the offset in the ROM is $0457DB, which is CPU address $97CB. If you've used the debugger for FCEU and want to see what's happening, you might want to put an execution breakpoint at address $97C8. This is inside the code for player critical hits only (monsters sold separately.. er, wait a minute :). What my code does is force the game to accept any random number as "good enough" to trigger a critical. It does that by diverting a "failure" result into the critical-hit code, instead of skipping over it.
The actual game code goes back further, but unfortunately this game uses the BRK (opcode 00) instructions, which seems pretty unusual [none of the other DW games uses them, as far as I know, nor does FF1]. I read once somewhere that the 6502 generally doesn't like them. :) It's a software interrupt, usually used for debugging, or so I understand. In this game, BRK instructions are used as general-purpose functions for very common tasks, usually accessing data or calling code that's in a different bank (handles all of the mapper / bank-switching messiness). So, if you trace through these calls, you'll notice that it takes a long time because there's alot of overhead before and after the actual function, which can be quite confusing. I've tried traced through some of it before, but due to the complexity, I haven't mapped it all out. The BRK calls used by the critical-hit code were unknown to me, but through further tracing, I've gotten a better understanding of these ones. I can't be certain I've got it all figured out, but I'm pretty confident.
I'll try to give a summary here of that particular code. The first things it does are to check for special modifiers for critical hit probabilities. The first modifier it checks for is if critical hits for the attacker are disabled.. that would happen if certain weapons like the poison needle are equipped, which cannot critical. Also, a character under the influence of the BiKill spell cannot critical, I believe. In this case, it skips the critical-hit code altogether. The other modifier it checks is if the auto-critical flag is set, wich means all hits are guaranteed to be critical. The Chance spell's "morale boost" will trigger this.. not sure if anything else will. This causes the game to go directly to the critical hit code, bypassing all randomness checking, etc.
Once past those checks, it will set the threshold for a critical hit. The default is 4 (out of 256).. pretty slim. It will then find out the identity of who's turn it is.. it seems more complex than it needs to be, but I trust the programmers had good reason. :) It does all of this to find out if it's Alena's turn.. if so, it calls a function to get her level, which then replaces the default threshold. That translates to just under 0.4% chance per level. At level 99, her chances would be 99/256, which is a little over 38.5%.. pretty nice, of course that's out of the question for a time attack. =} It may be there are exceptions to her threshold being equal to her level (haven't tested enough), but it really doesn't seem like it.
Once the critical-chance threshold is finalized, it calls a function to get a "random" number. This seems to be similar to what DW2 uses for randomness. As far as I can tell, it's based on a CRC16 checksum (usually used to verify that saved games haven't been corrupted by battery failure). Each time it's called, it uses the previous output. The randomness uses only 1 of the 2 bytes generated (the low-byte) and adds a modifier that's increased by 1 each time through.. this final result is the actual "random" number that's returned. If this number is the same as, or higher, than the threshold it will not be a critical hit.. that will happen only if it's less than the threshold value.
(If you want to trace through the random-number making process, set a breakpoint at $C891.. by the time it reaches $C8AC, the value in the A register will be the "random" value used. It's recommended to set a breakpoint at $97C5 first. Once that gets triggered, set the $C891 breakpoint... that way, you'll be sure that it's related to the critical-hit randomness checking instead of other randomness.)
Now, this is only called when needed. However, the low part of the crc value is modified seemingly every frame, so that's where the frame-level of randomness comes through as a result. It seems to be increased by 1 each time and is limited to 8 bits (which means it rolls over to 0 after 255 and doesn't affect anything else). The CRC values are in locations $12 and $13, with the CRC modifier at $050D, which you'll see if you decide to trace through it.
97A4: AD E7 72 LDA $72E7 ; Some battle flags.. (bit-wise)
97A7: 29 08 AND #$08 ; Check if critical hits allowed.
97A9: F0 2C BEQ $97D7 ; If not, skip critical-hit code. ("BiKill", poison needle, etc.)
97AB: AD E4 72 LDA $72E4 ; More battle flags.. (bit-wise)
97AE: 29 08 AND #$08 ; Check if always critical. (Chance spell effect "Morale boosted")
97B0: D0 1A BNE $97CC ; If so, bypass critical-hit probability tests.
97B2: A9 04 LDA #$04 ; The following part is used in determining the random chance of critical.
97B4: 85 00 STA $00 ; Start with value $04 into location $00. Base chance = 4/256 (= 1/64)
97B6: 00 06 BRK $06 ; A black-box function call.. seems to lookup the index of which character's turn it is.
97B8: 1F .DB $1F ; (extra data for the BRK instruction)
97B9: 00 2B BRK $2B ; Use index to lookup character data.. in this case, gets their character number.
97BB: 53 .DB $53 ; (extra BRK data)
97BC: C9 07 CMP #$07 ; Is it Alena? (is character number a match for Alena's number?)
97BE: D0 05 BNE $97C5 ; if not, skip over Alena's special handling.
97C0: 00 0F BRK $0F ; Get Alena's level.
97C2: 53 .DB $53 ; (extra BRK data)
97C3: 85 00 STA $00 ; Set the critical chance threshold.
97C5: 00 1B BRK $1B ; Get random value that will be critical chance.
97C7: 0F .DB $0F ; (extra BRK data)
97C8: C5 00 CMP $00 ; Compare it to threshold.
97CA: B0 0B BCS $97D7 ; Is it at least as high? If so, no critical hit (skip next part). (My GG code changed branch destination to next instruction)
97CC: 20 16 99 JSR $9916 ; Critical-hit related code follows.
97CF: 20 2E BF JSR $BF2E
97D2: 88 DEY
97D3: 00 F2 BRK $F2
97D5: D3 .DB $D3
97D6: 04 .DB $04
97D7: 20 8B A7 JSR $A78B ; Regular hits skip to here.
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
ditto, this seems to be a good rough draft but should be redone. This can certainly be done faster
the 65 re-records is rather low even for a minute long movie.
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
nitsuja wrote:
much better would be to have BisqBot optimize each hit individually, and only roll back all the way if it can't find any input that works at all for one of the later hits (or if it succeeds in killing the boss and wants to try again). That's what I had in mind when suggesting to try it in boss battles, that the segmented nature of the battle be taken advantage of to speed up the search. (I'm talking about boss battle optimizations in general so maybe I'm overlooking something specific to Gutsman here...)
for bigger events, the only potential problem with this method is that is would eliminate the possibilty of skipping the "goal" entirely.
for instance if you were to try to make this play the wily stage of mm1 and one of the goals was to get to cutman as soon as possible it would never "discover" how to bypass the boss entirely.
Emulator Coder, Published Author, Site Developer, Site Owner, Expert player
(3636)
Joined: 11/3/2004
Posts: 4758
Location: Tennessee
I agree with coolbumbty's last comment. The glitches are now so over my head I can't contribute anything substantial. I'll I can do is sit here and gawk at the mpg's