Posts for samurai_goroh

Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I didn't included the text...: Edit: Detailing the legs:
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I just used Paint and re-drew the image by hand while zooming it 800%. Draw with the pencil in 4 px (last option) and redo (or clean) any parts with 1 px. Change to the shapes (line and circle) to trace them if needed.
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I didn't quite understood the part of the shades (so I might misinterpreted it, I know it's reflection), so this is what I came with:
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I've been watching your WIPs ars4326 and have to thank & congratulate you for making a TAS of this game. It was one of the games I had as childhood which could only beat once & by luck (like 1 HP and no items left or something like that). I just wonder something, did you consider taking the Whip, or is it not stronger than the Gun? Or would it just take to much time to level it in order to be effective? The 3D room puzzles look kind of epileptic, but there's no way around it. I recommend not to stare at that part. All in all, this is a yes vote for me :)
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
Couldn't you make sharper the Flareon drawing, or was that intended? Here's a relative quick mod in paint of what I mean: Also made a image from a drawing of a game I like: You can find the original drawing here (not mine)
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I forgot how important was to charge the CO power for the Turn Survival, that you have to squeeze all the units you can sacrifice or kill to fill that meter ASAP. Say Alaktorn, are you planning on going for a TAS of the full course? (that would be great, even if you don't plan to submit the run here)
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
Oh right, I was reading it as all values on the list must be true, but it's any of them (probably got confused with the AND between the 2 values and ignored the OR) But shouldn't the code be more like:
local function test(lift, value)
    local result = false
    for each i in lift do
        if memory.readbyte(lift[i]) == value then
            result = true
            break
        end
    end
    return result
end

if ( test(lift, 1) and test(lift, 6) ) then
    --Insert code here
end
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
jlun2 wrote:
Regarding lua if statements, are there any ways to compare if 2 conditions are at 2 different values other than a large amount of "and/or"s? Currently, I'm doing something like:
if (memory.readbyte(lift[1]) ~= 2 or memory.readbyte(lift[2]) ~= 2 or memory.readbyte(lift[3]) ~= 2 or memory.readbyte(lift[4]) ~= 2 or memory.readbyte(lift[5]) ~= 2 or memory.readbyte(lift[6]) ~= 2) and (memory.readbyte(lift[1]) == 7 or memory.readbyte(lift[7]) == 7 or memory.readbyte(lift[3]) == 7 or memory.readbyte(lift[4]) == 7 or memory.readbyte(lift[5]) == 7 or memory.readbyte(lift[6]) == 7) then
and it looks really messy and hard to read.
I don't understand why you are comparing if address is not a 2 but later if is a 7. If it's a 7 it cannot be a 2 (so the first part makes no sense to me), or are you trying to compare the bits?
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I usually only check and vote runs I'm interested on. So if the run was good, I'll like it (because I already liked the game and had an idea of what to expect). So what I'm going, is that the only people that voted are people which Like Final Fantasy Games, so hence that biased poll results. (And yes, I think the poll makes no sense for where should it go if it gets published)
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
That's quite a nice TAS you got there paosidufygth beating the WRs, well done :D I'm a bit curious, was bumping into 3 cars better than just 2? I saw you beat the 1st lap in the WRs (no clue about opener record, just the 1st lap made in the WR) in most of them but not all, but maybe that's just so that you have a better 2nd lap I would think... I don't know what path does the WR takes in Sand Ocean, but I have to say it was interesting seeing you bumping into the enemy cars while turning. Also, were you working on this project for long time ago, or why use that version of Snes9x (I ran it on 1.43 v17)?
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
This game reminded me of the good old days watching that show, so it was surely entertaining for me to watch, yes vote :)
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I was checking that script and noticed it could be simplified quite a bit by using string.format and a table to store the name of the characters: Tekken3J - v1.1b PSXjin.lua Note that I haven't run it as I don't have the game, but it should work (hopefully)... Edit: It seems I indeed made a small mistake on lines 59 & 63, instead of a dot you use brackets... It was: gui.text ( 16, 85, character.moku1 ) It should be: gui.text ( 16, 85, character[moku1] )
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
Cooljay wrote:
Would still like to see a TAS on the advance version someday as well though.
Mmm, the strategies would be very similar (no exploitable bugs though, which some people may like because of Neo Exdeath). I think the SDA run was like that IIRC, it's been ages since I saw that run though. I also know some Japanese players do speedruns with that condition, but I've never seen one of those runs. Also, the GBA version would likely have to use of quick save inside dungeons in order to avoid random battles (not always, but surely in big rooms like Mua Forest) & I think that makes the run less appealing, at least it does to me. That been said, maybe if a Low Level Game TAS branch is allowed to be submitted, I could be interested on working on that. Another branch could be 100% treasure rate, but I think that wouldn't be appealing at all (or maybe 100% bestiary, which makes the GBA version best version to do it)...
Sir VG wrote:
Would also love to see a run sometime of this FFV romhack: http://www.romhacking.net/hacks/1408/
I know about that patch (as I have it since it came) but never played it before nor the ancient cave one...
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
Yea, this has been the bane for this game (if you're not familiar with it & sometimes even if you are familiar, you can't follow that well what's going on). I thought that the Lua script would be a bit useful (along with the walktrough), but I guess nothing beats a subtitle explaining what's going on on the fly.
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
My brother went to Japan last year and brought me a copy of this game (obviously a Super Famicom cartridge) with the box included (unfortunately no manual, although not sure if it existed in the first place), which brought me interested on playing it again since quite a long time... I decided to create a playlist of bugs, which contains the more relevant ones (still planning to do a few more, but haven't found a good way to show them), update my Lua script & even update the TAS (which I finished a few hours ago), that I'll be posting soon, probably over the weekend (if you're wondering about the timing, well I was right that you could sub 3 and a half hours; the input last for 3hrs, 25 min, 57.201 sec). All that's left to do on it (which is not mandatory) is to create subtitles. It looks so troublesome that I'm thinking that maybe I could stream it and answer questions as the run goes, although I don't like to talk to the mic :P (or maybe just answer the questions in the forum when the run gets submitted and be done with it...)
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
First I was happy to see a post on this topic and even with a movie included. Unfortunately, I'm not that fond of certain type of glitches in some games, and I was hoping this was going to be a normal run of the first cup, but it wasn't. (When I just ran the file, I though it desynched because you missed that bump, until you went 180º and then realized this run was going to use the pause glitch to skip laps) Well, it's nice to have a TAS that completes all levels, but it seems to me like it's not that optimized, at least not when you have to do a normal lap (Sand Ocean time is really bad in comparison with the WR). Also, why was Sand Ocean the only track that never skipped a lap? Is it impossible or wastes to much energy trying to pull it?
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
Oh I see, that makes sense, thanks creaothceann. Only wonder why that is not documented. When the error is thrown, it does tell you the range you have to use, but if you're unaware (as I was) you'll be wondering why until you see that using RAM search also starts from 000000h (I was like, if that's how things are done around here, then okay lets do it also as such...)
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I see, I though that it should be called get and set as you name functions in Java (and I was looking at mainmemory tab and not also in memory tab) Thanks
I'm the best in the Universe! Remember that!
Post subject: Question about memory domains and LUA
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
Poking with the memory domain, I think I've found what I was looking for but still want to ask just to be sure. 1) Normally in other emulators, what you use for cheats are PAR codes which are just addresses in the WRAM. An example could be 7E0000, which is where the RAM starts (and it ends at 7FFFFF). 2) In SNES9x you can read directly from the ROM if you write something like:
Language: LUA

memory.readbyte( 0xC00000) -- Offset 0x000000 memory.readbyte( 0xDFFFFF) -- Offset 0x1FFFFF
If I understood correctly you can do this in Bishawk as follow: 1) You take out the first 2 digits (You subtract whatever your address is with 7E0000. e.g. 7E0B56 - 7E0000 = 0B56, which is what you use in Bizhawk but can't understand why you need to do this) 2) You have to change first the memory domain to CARTROM (which I'm not sure yet how) then you can read/write into the ROM & if you still want to jump into the WRAM, you have to move back, correct? http://tasvideos.org/Bizhawk/LuaFunctions.html ^ There's a function called mainmemory.getname(), which tells you which type of memory you're using, but there's no set function (or at least is not documented).
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
Music reminded me a lot of the 60's Batman XD Voting yes
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I've used io library to dump information using the SNES9x. First you use io.output() to create a file, io.write() to write in it and io.close() to close it when you finish it. I used the following example to create a watch file instead of me having to manually create it, which was tedious. (I think I had to later revise it, but that's not the point here, just to show how you can use it...):
Language: LUA

local function watch_file() io.output("Final Fantasy V (P).wch") local index = 0x80 local address = 0x7E2200 local size = "b" local Type = "h" local zero = 0 local notes = "" for i=0, index-1 do io.write( string.format( "%5X %6X %s %s %i %s\n", i, address+i, size, Type, zero, notes) ) end io.close() end
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
What better agent than Agent Smith! http://www.deviantart.com/art/Smith-Will-Suffice-6170030
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
Cooljay wrote:
Definitely sets the 90's Dance Vibe. Surprised it doesn't have What is Love though. Yes vote for sure.
I think songs are closer to (actually over) year 2K though. Voting meh, liked half the list of songs (because I already had them :P) but watching the run was too repetitive to saying I liked it (though there's nothing really what you could had done to make it more entertaining I guess...) Edit: Odd, I though they were from around 2000-2001, but they are from the 90's (at least the ones I have and could check...)
I'm the best in the Universe! Remember that!
Editor, Experienced Forum User, Published Author, Player (53)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
scantics, LUA indexes tables normally 1 based (Starts on index 1), if you want to use it as 0 bases then you have to explicit declare it (as you did, but didn't understood why). Unless there's an specific need to have them start at 0, I would avoid it all together. I was able to run your script and it didn't thrown any error. However the coordinates for the enemies were off... Anyway, when I was testing the position addresses I made a LUA script. Though it was for Snes9x, I adapted it now for Bizhawk and here it is. It has the same style as the one I have for Final Fantasy V, where I save first the addresses in a table and then call them, sure you could reduce some code but I think this is very legible:
Language: LUA

-- -------------------------------------- -- -- Parodius; Non-Sense Fantasy LUA script -- -- by: samurai goroh -- -- mail: samuraigoroh@gmail.com -- -- -------------------------------------- -- -- ------- -- -- GLOBALS -- -- ------- -- wwm = 0 -- windows width min wwM = 255 -- windows width MAX whm = 0 -- windows height min whM = 224 -- windows height MAX -------------------------------------------------------------------------------- function drawAxis(x, y, color) -- Draws an Axis around ships -------------------------------------------------------------------------------- gui.drawLine ( x, whm, x, whM, color) gui.drawLine (wwm, y, wwM, y, color) end -------------------------------------------------------------------------------- function drawCollision(x, y, color) -- Draws a box around ships -------------------------------------------------------------------------------- gui.drawBox (x-6, y-6, x+6, y+6, color) end -------------------------------------------------------------------------------- function EnemyInfo(Enemy) -- ENEMY addresses goes here -------------------------------------------------------------------------------- local enemy = Enemy - 1 local enemyTable = {} enemyTable = { sprite = memory.readbyte(0x000D61 + enemy*(0x50)), x = memory.readbyte(0x000D68 + enemy*(0x50)), y = memory.readbyte(0x000D6C + enemy*(0x50)), hp = memory.readbyte(0x000D76 + enemy*(0x50)), } return enemyTable end -------------------------------------------------------------------------------- local function enemy_data() -- ENEMY code goes here -------------------------------------------------------------------------------- local enemy = {} -- Holds the enemy's information local x,y = 0,0 -- Coord X,Y local hp = 0 -- HP?! local sprite = 0 -- Sprite?! local EnemiesMax = 64 -- Max number of enemies in screen (not sure what's the limit but 64 sounds about right...) for i=1, EnemiesMax do enemy[i] = EnemyInfo(i) -- Populate the enemy's information x = enemy[i].x y = enemy[i].y hp = enemy[i].hp sprite = enemy[i].sprite if (hp ~= 0) and (sprite ~= 0) then --drawAxis(x, y, 0xFFFF4000) drawCollision( x, y, 0xFFFF4000) end end end -------------------------------------------------------------------------------- function AllyInfo(Enemy) -- ALLY addresses goes here -------------------------------------------------------------------------------- local enemy = Enemy - 1 local enemyTable = {} enemyTable = { x = memory.readbyte(0x000BD8 + enemy*(0x50)), y = memory.readbyte(0x000BDC + enemy*(0x50)), hp = memory.readbyte(0x000BE6 + enemy*(0x50)), } return enemyTable end -------------------------------------------------------------------------------- local function character_data() -- ALLY code goes here -------------------------------------------------------------------------------- local ally = {} -- Holds the character's information local x,y = 0,0 -- Coord X,Y local hp = 0 -- HP?! local AllyMax = 5 -- Max number of allies in screen (Ship + 4 Options) for i=1, AllyMax do ally[i] = AllyInfo(i) -- Populate the ally's information x = ally[i].x y = ally[i].y hp = ally[i].hp --if x > 0 then drawAxis( x, y, 0xFF0040FF) drawCollision( x, y, 0xFF0080FF) --end end end -------------------------------------------------------------------------------- function dumping() -- Dumps some addresses, to analyze manually. Easy to paste on Excel -------------------------------------------------------------------------------- io.output("Parodius.txt") address = 0x000B80 size = 80 iter = 64 for i=0, size do row = "" for j=0, iter do x = memory.readbyte( address + i + (j*size) ) row = row .. string.format( "%2X ", x ) -- Uses a tab to split text end io.write( row .. "\n" ) end io.close() print ("dumped file") end -------------------------------------------------------------------------------- function main() -- Contains code that will be continiously running -------------------------------------------------------------------------------- character_data() enemy_data() end -------------------------------------------------------------------------------- --****************************************************************************-- --dumping() while true do main() emu.frameadvance() end --****************************************************************************--
I'm the best in the Universe! Remember that!