Joined: 3/21/2010
Posts: 15
So, I'm just starting this run and there's still a lot of stuff that's confusing the hell out of me. Namely, I'm having trouble figuring out how to dodge on command. Now, I know I can avoid monster encounters by simply waiting frames and advancing then, as you can see I avoid encounters entirely up til the boss fight. Yet the fight, while more of a frustrated button mash after about half an hour of trying, shows that dodges do happen. It may simply be a lack of ability to dodge due to levels, which means I'll need to purposefully grind or some odd to get the ability, which slows stuff down. The boss fight wasn't THAT' bad, and in that first area, there's only really two fights, that golem, and the next. Yet it's the later fights that leave me worried about having to grind up level, because with experience playing the game non-TAS... it's truly a bitch. If I could figure out how to manipulate dodges, perhaps through getting someone to look at the programming and figure it out, I'd be ecstatic. I went ahead and included a 'map' of the first level to show that the dungeon(at least so far) really IS straight forward. Edit: Link removed by staff
Player (215)
Joined: 2/12/2006
Posts: 373
Location: Oregon
Do you have a link to an SMV with what you've done so far? If you do, put it up on dehacked's Microstorage at http://dehacked.2y.net/microstorage.php Do you know about lua scripting? Especially since you're planning to TAS an RPG, it would be a good idea to know how to do it. One place to start would be http://tasvideos.org/LuaScripting.html. One possible application: if it turns out, for example, that waiting the right amount of time can make the character dodge, you could make a lua script that tries many different waiting times until it finds the right one. One more thing. Keep in mind that if you decide to submit this, it may not be accepted. I say that because although I personally like this game it doesn't seem to be very popular and wandering through mazes with little change in look may bore many viewers. But of course if you want to TAS it anyway, go ahead. I at least would like to see a complete TAS of this game :).
Joined: 3/21/2010
Posts: 15
Ugh. I HAD a link there, including other stuff in a zip file. Since I can't edit my first post anymore... http://dehacked.2y.net/microstorage.php/info/1401232702/Arcana%20%28U%29%20%5Bh1C%5D.smv There.
Player (215)
Joined: 2/12/2006
Posts: 373
Location: Oregon
I noticed that your SMV was made using "Arcana (U) [h1C]". That is actually a hacked ROM. Your SMV still syncs with the clean ROM, but I suggest that you track down the clean ROM and TAS using that. You can check whether a ROM is good by using NSRT. Also, did your first link have a ROM or something? I'm wondering what would cause it to be removed.
Joined: 3/21/2010
Posts: 15
o.O Well now, that makes me wonder. There's nothing different about the rom X3 at least, not from what I can tell. I'll go look for another, then. And yes, I included the rom. I was griped at in a pm to not do it again, so.. yeah. It seems that's why.
Joined: 3/21/2010
Posts: 15
Posting this for reference of someone to glance at
--I find this method for pressing buttons easier than the built-in method. Pulled from my Lufia scripts
function press (button, button2, button3, button4, button5)
	j1 = {}
	
	if (button ~= nil) then 
	j1[button] = true 
	end
	
	if (button2 ~= nil) then 
	j1[button2] = true 
	end
	
	if (button3 ~= nil) then 
	j1[button3] = true 
	end
	
	if (button4 ~= nil) then 
	j1[button4] = true 
	end
	
	if (button5 ~= nil) then 
	j1[button5] = true 
	end
	
	joypad.set (1, j1)
	snes9x.frameadvance()
	j1 = {}
end

local j1 = {}
local minframes = 999999
local waitframes = 0
local frames = 0
local initstate = savestate.create() --savestate for before the battle
local beststate = savestate.create() --savestate for the best end-of-battle time

--"constants"
local ROOKS = 0
local SYLPH = 1
local TEEFA = 2

snes9x.speedmode("turbo")
local enemyLife = 0x7E09DB
local rooksLife = 0x7E12F3
local sylphLife = 0x7E12F5
local teefaLife = 0x7E12F7
local whoseTurn = 0x7E09ED

--I'm not sure what this is supposed to be, but I've found I can use it to keep track of some parts of the battle.
--The constants you see compared with this location were found by trial and error with the memory watcher, 
--so I can't really explain why they are what they are, just that they work.
local ready = 0x7E10A5

savestate.save(initstate)
while frames < 40 do --320 is an arbitrary number
	while (waitframes <frames> 3)) do
			if (memory.readbyte(enemyLife) == 0 or memory.readbyte(rooksLife) == 0 or memory.readbyte(sylphLife) == 0 or memory.readbyte(teefaLife) ==0) then
				break end
			press()
		end
		
		press("A") --select the boss then attack
		press()
		press("A")
		press()
	end	
	--check framecount and save state if this is the fastest attempt so far and no party member is dead
	if (movie.framecount() < minframes and memory.readbyte(rooksLife) ~= 0 and memory.readbyte(sylphLife) ~= 0 and memory.readbyte(teefaLife) ~=0) then
		minframes = movie.framecount()
		savestate.save (beststate)
	end
	savestate.load (initstate) --jump back to before the battle in order to make another attempt
end
savestate.load (beststate) --load the best attempt
snes9x.pause()