Posts for Randil

Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
I'm pretty sure I've seen a video of andrewg (I think it was andrewg) playing SMB 1 by ear, getting quite a bit... I can't seem to find the video though...
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Lord Tom wrote:
Just a heads up, there should be an improved "warped" submission from myself and Mitjitsu hitting the workbench in the near future...
Awesome! I'm looking forward to it! :)
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Why do you want 0.98.25 and not 0.98.28? As far as I know, .28 is superior to .25 in every way (I actually don't think there are that many differences between them). 0.98.28 can be found here. But now that you mention it, I'm having troubles finding any mirrors to .25 too, in fact, I'm having troubles finding mirrors to any version between .17 and .27...
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Joy2Key is a program that allows you to assign keyboard input to your controller. For example, if you assign the Start button in PCSX to the "r" button on your keyboard, Joy2Key can assign the "r" button to a button on your gamepad. That way, you can use your gamepad when you want to press Start, even though it's actually bound to a keyboard button. Joy2Key can be downloaded here.
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
DJSlambdaN wrote:
BTW i dont really understand with this : Thus, if you alternate up and down while holding right, you'll move to the right every frame instead of every other frame. The same applies for any direction. In some cases, you may want to start by pressing the direction alone for one frame for parity reasons. I got the first part, but i dont really get that part. Can you help me? Im from sweden and 13 years old so...
[Swedish]Här kommer en översättning: Om du trycker upp och ner varannan frame medan du håller inne höger, så flyttar du åt höger varje frame istället för varannan. Samma sak funkar även för andra riktningar. I vissa fall vill du börja med att trycka den riktningen du ska åt utan att trycka på någon annan knapp, på grund av paritetsanledningar (jag vet inte riktigt vad "paritet" är, men jag tror han menar att banan är symmetrisk på något sätt). Jag hoppas du blev något klokare av den förklaringen![/Swedish]
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Here's a lua manual, and qFox has made a list of the different lua-commands for the emulators here. If the game is simple enough, it's not that hard to make a script that draws hitboxes around enemies. Because of the way boxes are drawn in lua, you want to have a function that, given a point (x,y) and a width and height, draws a box around (x,y) with that given height and width. Such a script could look something like: (xoffset and yoffset is how many pixels the box is moved from the center, useful in some cases, but they should be both 0).
local function box(xcenter,ycenter,width,height,xoffset,yoffset,color)

left  = xcenter-width/2+xoffset
down  = ycenter+height/2-yoffset
right = xcenter+width/2+xoffset
up    = ycenter-height/2-yoffset

	if (left > 0 and left <255> 0 and right <255> 0 and down <224> 0 and up < 224) then
		gui.drawbox(left,down,right,up,color);

	end;
end;
The if-statements are to make sure that the box is on screen, otherwise the box isn't drawn. Now, if you put the enemy's x and y position as the xcenter and ycenter argument, and give the function values for width and height, it draws a box around the enemy. Ex: Let's say that the enemy's x and y positions are stored at RAM addresses $0100 and $0101 respectively. To draw a red 16*16 pixel box around that enemy, you write:
enemy1x = memory.readbyte(0x100)
enemy1y = memory.readbyte(0x101)

box(enemy1x, enem1y, 16,16,0,0,"red")
If the enemies' hitboxes are of different sizes, you'll have to make some if-statement or so that takes respect to what type of enemy you're dealing with, and in that case you'll have to find the RAM address for the enemy type.
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Nice run! Using subtitles seems like a nice addition to FCEUX. 7.4/9.2 from me.
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
After finding out about Dpadhero, from this post, I made a script that beats every stage perfectly. It also counts how many balls you hit of each type. If you want to try out the script, run it at the very start of the level, when your score is still 0.
while true do

local function displayer()

points = memory.readbyte(0x06F) + 256*memory.readbyte(0x070) + 65536*memory.readbyte(0x071)

y =    {[0]= 0x3FA, 0x3FF, 0x404, 0x3FA, 0x409, 0x40E, 0x413, 0x418, 0x41D, 0x422, 0x427, 0x42C, 0x431, 0x436, 0x43B, 0x440, 0x445, 0x44A}
t =    {[0]= 0x3F9, 0x3FE, 0x403, 0x3F9, 0x408, 0x40D, 0x412, 0x417, 0x41C, 0x421, 0x426, 0x42B, 0x430, 0x435, 0x43A, 0x43F, 0x444, 0x449}
v =    {[0]= 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
q =    {[0]= "B", "B>", "B<", "Bv", "B^", "A", "A>", "A<", "Av", "A^"}

if points==0 then 

h={[0]= 0,0,0,0,0,0,0,0,0,0}

end

for i=0,17,1 do

if memory.readbyte(y[i])==174 then v[i]=1 r=i end

end

w = math.max(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7], v[8], v[9], v[10], v[11], v[12], v[13], v[14], v[15], v[16], v[17])

if w==1 then

    if memory.readbyte(t[r])==0 then val={B=true} h[0]=h[0]+1
elseif memory.readbyte(t[r])==1 then val={B=true, right=true} h[1]=h[1]+1
elseif memory.readbyte(t[r])==2 then val={B=true, left=true} h[2]=h[2]+1
elseif memory.readbyte(t[r])==3 then val={B=true, down=true} h[3]=h[3]+1
elseif memory.readbyte(t[r])==4 then val={B=true, up=true} h[4]=h[4]+1
elseif memory.readbyte(t[r])==8 then val={A=true} h[5]=h[5]+1
elseif memory.readbyte(t[r])==9 then val={A=true, right=true} h[6]=h[6]+1
elseif memory.readbyte(t[r])==10 then val={A=true, left=true} h[7]=h[7]+1
elseif memory.readbyte(t[r])==11 then val={A=true, down=true} h[8]=h[8]+1
elseif memory.readbyte(t[r])==12 then val={A=true, up=true} h[9]=h[9]+1
else val={} end

else

val={}

end

joypad.set(1, val)

for k=0,9,1 do 
gui.text(10,10+8*k,q[k] .. ": " .. h[k])
end

gui.text(10,90,"Total: " .. h[0]+h[1]+h[2]+h[3]+h[4]+h[5]+h[6]+h[7]+h[8]+h[9])

end

gui.register(displayer)

   FCEU.frameadvance()
end
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
DevilSpree wrote:
acmlm? Isn't that a speedrunner from TASVideos? (I wanna say Megaman runs)
Yeah, Acmlm is a TASer, (here are his movies) but he hasn't TASed any Mega Man games. His site should be able to answer your questions. Good luck!
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Haha, I actually recognized that room immediately (how you got the idea to make that picture is a little unclear to me). What does "Kuka tunnistaa paikan?" (the text under the picture in your IRC gallery) mean?
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
This song, called "Tingeling", was shown on Sweden's Eurovision Song Contest (it wasn't a contestant). Don't take it too seriously, it's just a parody song. The Russian embassy in Sweden got really mad when they saw this, and it's been quite a lot of commotion about it here in Sweden. Perhaps some of our Russian users have already heard it. Please don't hate my country for this. http://www.youtube.com/watch?v=cWo6Dbwq4Ms
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
adelikat wrote:
Oh. Then Hex Editor can do just fine with that feature. So Randil is just complaining about having to scroll down to the address. In that case, I like the idea of a Go to address (with ctrl+G hotkey) feature.
Yeah, Xkeeper explained my point very well. Overall, I think the Hex editor works well as it is, it's just that it takes me some time to find the right address among all the others. :) The "Go to address" feature sounds intriguing to me too.
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Nice improvements. I played around with this emulator this morning, and it's looking really cool. Perhaps I'm the only one, but I personally miss some features that Memory Viewer had in the old FCEU. More precisely, these features: (If you're not familiar with the memory viewer, here's what it looks like. I will refer to the fields as shown in the picture above. *Memory poke: This still works in FCEUX, but I found it a bit more convenient in the old FCEU. In FCEU, you could enter a RAM address in field A, and enter a hexadecimal value in field B. When you press "Poke Me!", that address was instantly set to that value. This can still be done in the Hex editor, but I find it a bit more inconvenient because it can take some time to find the right address. Perhaps a solution where you keep Hex editor as it is, but add this "Poke me!" feature that FCEU had? *Memory file dump: You could dump the values of all addresses from RAM position C to D. When you pressed "Memory file load", field E, the emulator loaded these RAM values. This tool is really useful for finding RAM addresses - Let's say you're looking for the RAM address for Boss HP in a game. If you store all RAM addresses from 0000 to 01A0 when Boss HP is 1, and then load this file when boss HP is 5, and his HP doesn't change, you know that the RAM address for boss HP is not between 0000 and 01A0. Perhaps I'm the only one who really uses these old features. :) But it would be nice to see them implemented, it's the only reason I still hang on to ol' .28, otherwise FCEUX is superior.
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
I watched this yesterday, but forgot to vote. This was a good movie, and I enjoyed watching it. High votes from me. :)
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
apples wrote:
I'm thinking of doing more "freerunning" style. Yay, another question; is the TASEdit style of TASing also available for a GB emulator?
Yeah, TAS movie editor works for GB movie-files (.vbm).
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
apples wrote:
1) There is 2 columns for each button. I assume it's for each controller?
Yeah, if the movie-file conatins input from two controllers, then the second column is for controller 2. (It should say Controller 2 at the top of the column too). Perhaps that wasn't what you were talking about, if so, could you post a screenshot of what you mean? Good luck with your TASing. :) EDIT: Oh, I thought we were talking about TAS movie editor. Well, it's a program you might want to check out, since it does what you were talking about.
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
All but 21,22,23 and 26. I have some ideas, I'll just have to spend some more time on them. 1: Kendo Rage 2: Boulder Dash 3: Mega Man Zero 4: Young Merlin 5: Sonic Advance 6: Addams Family 7: Dragon Warrior 8: Might and magic 9: Ocarina of time 10: Splatter House 11: Chrono Trigger 12: Little Mermaid 13: Castle of Dragon 14: Fatal labytinth 15: Out of this world 16: Dynamite Headdy 17: Adventure Island 18: Aruma no Kiseki 19: Super Mario World 20: Naruto Ninja Council 24: Turok Dinosaur hunter 25: Adventures of Bayou Billy
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Neither the Album cover, my band name or the album name is particulary funny. They're actually pretty good: EDIT: Did another one:
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
P.JBoy wrote:
For if Randil gives up: 7: Mario Adventure
Thanks, I actually did give up. :P Well, now we've figured out all of Warp's anagrams! Someone please make more, this was a lot of fun! :)
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
I have all but #7: 1: Super Metroid 2: Altered Beast 3: Blaster Master 4: Marble madness 5: Metroid Fusion 6: Gunstar Heroes 8: Tecmo Super Bowl 9: Legend of Zelda 10: Prince of Persia 11: Chameleon Twist 12: Rockman and Forte 13: Super Mario Bros 14: A boy and his Blob 15: Kirby's avalanche 16: Atlantis no Nazo 17: Castleofillusion 18: Battle of Olympus 19: ESWAT Cyper Police 20: Biker Mice from Mars 20: Biker Mice from Mars 21: Tony Hawk's Pro Skater, an s is missing in the anagram, probably from "Hawk's" 22: Mike Tyson's punchout, an "s" is actually missing in the anagram, you probably missed the "s" in "Tyson's". 23: Nightmare on Elm street Warp, please note points 21 and 22. EDIT: I missed that Kyrsimys found #21. Only one left now!
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Yes, if you're talking about resuming watching the movie from a specific point, just make a movie savestate at the point you want to resume watching from, and the next time you play the movie, play it in read-only mode and load that savestate. The movie will resume playing from that point. If you're talking about resuming recording a movie, it's basically the same. First, make a movie savestate at the point you want to continue recording from. The next time you want to continue recording, play the movie with the read-only tag unchecked, and load that savestate.
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
I made a script for Deja Vu that adds some additional menu movements. For example, pressing select makes the cursor move like in Uninvited, jumping between the different boxes. Holding down Start while on the picture or minimap and pressing a directional button will move the cursor to the that corner of the picture (for example, pressing start+up+right on the picture will move the cursor to the NE corner of the picture). Give it a try!
local function boxset(x,y,box,pic)

--sets x coord
memory.writebyte(0x0A5,x) 
memory.writebyte(0x207,x-5)
memory.writebyte(0x20B,x+3) 
memory.writebyte(0x20F,x-5)  
memory.writebyte(0x213,x+3)

--sets y coord
memory.writebyte(0x0A6,y) 
memory.writebyte(0x204,y-1)
memory.writebyte(0x208,y-1) 
memory.writebyte(0x20C,y+7)  
memory.writebyte(0x210,y+7) 

--sets the correct box
memory.writebyte(0x0C3,box) 
memory.writebyte(0x0C2,pic) 

end;

while true do

x=memory.readbyte(0x0A5)
y=memory.readbyte(0x0A6)
press=memory.readbyte(0x0F0)
pic = memory.readbyte(0x0C2)
input=memory.readbyte(0x0F7)

rambox = memory.readbyte(0x0C3)

if     x>15  and x<128 and y>31  and y<144 then box=20
elseif x>127 and x<184 and y>181 and y<232 then box=19
else box=rambox

end

if box>=7 and box<=14 then area=1 end
if box>=0 and box<=6  then area=2 end
if box==20 then area=3 end
if box>=15 and box<=19  then area=4 end

if AND(input,32)/32==1 then change=1 else change=0 end

if area==1 and change==1 and press==3 then boxset(72,82,7,0) end
if area==2 and change==1 and press==3 then boxset(138,170,15,1) end
if area==3 and change==1 and press==3 then boxset(154,42,0,1) end
if area==4 and change==1 and press==3 then boxset(26,170,7,1) end

xw = 23
xm = 72
xe = 120

ys = 136
ym = 82
yn = 40

t =  {[0]= 21, 20, 22, 18, 16, 17, 26, 24, 25}
p1 = {[0]= xe, xm, xw, xw, xm, xe, xw, xm, xe}
p2 = {[0]= ys, ys, ys, ym, ym, ym, yn, yn, yn}

for i=0,8,1 do 
if pic==0 and input==t[i] and press==3 then boxset(p1[i],p2[i],7,0) end
end

mxw = 143
mxm = 155
mxe = 168

mys = 216
mym = 204
myn = 191

mp1 = {[0]= mxe, mxm, mxw, mxw, mxm, mxe, mxw, mxm, mxe}
mp2 = {[0]= mys, mys, mys, mym, mym, mym, myn, myn, myn}

for i=0,8,1 do 
if pic==2 and input==t[i] and press==3 then boxset(mp1[i],mp2[i],7,2) end
end

   FCEU.frameadvance()
end
It might be fun to TAS Deja Vu with this script, just to see how much faster it would be. :) EDIT: Changed decimal values to hexadecimal values in the boxset function for better readability.
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Nice idea, but I'm positive that it won't save any time. The death animation is pretty long (about 450 frames) and there isn't much time in the current speedrun that isn't spent on eating dots. If the death animation was shorter, this might have saved some time, but as it is now, it probably won't (although I'd have to admit that it would have been a WTF moment for the viewers if the death trick was implemented).
Experienced Forum User, Published Author, Skilled player (1890)
Joined: 4/20/2005
Posts: 2160
Location: Norrköping, Sweden
Very glitchy run indeed, I enjoyed watching it. Great job!