Posts for Weatherton

1 2
9 10 11 28 29
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Should have expected an outcode.
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Great suggestion! I will give this a shot for finding the speed / position values I already had in Mupen. As for the item values, the only thing I have are the GameShark codes. It seems these should be readily transferable to BizHawk, but I don't know how. Anyone know?
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
yes vote! I still want to see a high score run for both of these though :) Plus warpless...
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Voted yes :) Any chance of seeing a high score run next? I find the strategies for getting high scores to be more interesting (i.e. getting fastest time while grabbing key bananas).
Current Project: - Mario Kart 64
Post subject: N64 Lua Script Help
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
I'm making a Lua script for BizHawk to automate some of the more repetitive maneuvers for Mario Kart 64. I've worked with adelikat some to get to this point and he added a multi-line text box capability for me. The GUI elements largely work but I need some help interfacing with the game. I figured I'd start this thread to solicit input. The current script automates an optimal Mini-Turbo routine based on four pieces of input (the item input is not currently used). When I click the "Generate Input" button the resulting input is produced in the text box at the right using the N64 mnemonic format (e.g. |0|......A.....R... 127,000). I then want to be able to enter that input into the game using the "Execute Input" button. How would I do that? Here is a screen capture of the interface: My code is as follows:
Language: lua

-------------This Lua script is developed by Drew Weatherton for the BizHawk emulator-------------- ------Purpose: Partially automate the process of executing perfect maneuvers in Mario Kart 64------ -- React to a button click function GenerateButton() --Variables, from Interface: Direction = forms.gettext(DirectionDropdown); SharpTurn = forms.ischecked(CheckboxSharpTurn); InitialSlideFrames = tonumber(forms.gettext(TextBoxInitialSlideFrames)); GlideTurnFrames = tonumber(forms.gettext(TextBoxGlideTurnFrames)); ItemFrame = 0 -- positive number is more complicated --------------- Mini-Turbo INPUT LOGIC ----------------------------------------------- --NOTE: I use the movie mnemonic format (e.g. |0|......A.....R... 127,000) --Add an array to store my inputs in FramesQueue = {} --Initial inward-facing hop / slide local i = 1 while i <= InitialSlideFrames do FramesQueue[#FramesQueue+1] = "|0|......A.....R... 127,000" i = i +1 end --First outward-facing slide phase local i = 1 while i <= 10 do FramesQueue[#FramesQueue+1] = "|0|......A.....R...-127,000" i =i +1 end --First inward-facing slide charge, Smoke -> Yellow if SharpTurn == true then FramesQueue[#FramesQueue+1] = "|0|......A.....R... 127,000" else FramesQueue[#FramesQueue+1] = "|0|......A.....R... 039,000" end --Second outward-facing slide phase local i = 1 while i <= 5 do FramesQueue[#FramesQueue+1] = "|0|......A.....R...-127,000" i = i +1 end --Second inward-facing slide charge, Smoke -> Red if SharpTurn == true then FramesQueue[#FramesQueue+1] = "|0|......A.....R... 127,000" else FramesQueue[#FramesQueue+1] = "|0|......A.....R... 039,000" end --Glide turn after afer releasing the MT local i = 1 while i <= GlideTurnFrames do FramesQueue[#FramesQueue+1] = "|0|......A.........-127,000" i = i + 1 end ---------------- THESE DO NOT YET WORK, SO THEY'RE EMPTY ---------------- --Hit Z on the requested frame to select an item if ItemFrame > 0 then -- FramesQueue[#ItemFrame] [10] = "Z" -- Need to figure out how to do this... end if Direction == Right then -- It would be nice if this syntax worked, but it does not --FramesQueue:gsub("-", "$") --FramesQueue:gsub(" ", "-") --FramesQueue:gsub("$", " ") end -------------------------------------------------------------------------- -- Convert the FramesQueue table local i = 1 local tableStr = "" while i <= #FramesQueue do tableStr = tableStr .. FramesQueue[i] .. "\r\n" i = i +1 end -- Verify output to the console console.log(tableStr) -- Output to the Main Window TextBox = forms.textbox(MainWindow, tableStr, 150, 700, "", 250, 40, true) end --Generate the User Interface MainWindow = forms.newform(600, 850, "Mario Kart 64 Automatic Transmission") LabelTopLeft = forms.label(MainWindow, "Choose your AutoSlide settings", 10, 10, 225, 20) LabelTopRight = forms.label(MainWindow, "Generated Input", 250, 10, 150, 23) --I would like to have the textbox exist before clicking "generate" but it's not working, so I've commented it out --TextBox = forms.textbox(MainWindow, "Input queue", 150, 700, "", 250, 40, true) ------------INPUTS ARE X,Y,WIDTH, HEIGHT -- For Text Boxes: WIDTH, HEIGHT, "signed", X, Y------- --Manuever Dropdown LabelDirection = forms.label(MainWindow, "facing slide", 60, 33, 75, 20) a = { } a[0] = "Right" a[1] = "Left" DirectionDropdown = forms.dropdown(MainWindow, a, 10, 30, 50, 20); --Sharp Turn? CheckboxSharpTurn = forms.checkbox(MainWindow, "Sharp Turn?", 20, 70) -- Initial slide frames entry LabelInitialSlideFrames = forms.label(MainWindow, "Frames to slide initially", 45, 98, 200, 23) TextBoxInitialSlideFrames = forms.textbox(MainWindow, "9", 20, 20, "UNSIGNED", 20, 95) --Glide Turn Frames LabelGlideTurnFrames = forms.label(MainWindow, "Frames to glide turn", 45, 125, 200, 23) TextBoxGlideTurnFrames = forms.textbox(MainWindow, "3", 20, 20, "UNSIGNED", 20, 122) --Item Frame LabelItemFrame = forms.label(MainWindow, "Frame to hit Z for item", 45, 150, 200, 23) TextBoxItemFrame = forms.textbox(MainWindow, "0", 20, 20, "UNSIGNED", 20, 147) --Create Input GenerateButton = forms.button(MainWindow, "Generate Input", GenerateButton, 10, 180, 100, 23) ExecuteButton = forms.button(MainWindow, "Execute Input", GenerateButton, 10, 210, 100, 23) while true do emu.frameadvance(); end
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Agreed, that was sweet!
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
So pumped for this run. This is one of those games that was made for TAS!
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
I am in the process of switching to BizHawk and need to find some memory addresses. I would appreciate any help anyone could give me. I also have some relevant GameShark codes that should help:
    1. Velocity
Relevant codes: Minimum Speed Modifier (Player 1): 810F6A10 45?? Maximum Speed Modifier (Player 1): 810F6BA4 ???? 810F6BA6 0000 Speed Values: 439B Time Trials 4391 50CC 43A0 150CC 43F0 >100Km/h 43C0 100Km/h 4360 40 Km/h 4310 20 Km/h
    2. Item
(This should tell me what item I would get if I hit Z on the current frame) Relevant codes: Weapon Modifier (Player 1): 80165F5D 00?? 80165F8A 00?? Unlmited weapons of specific type: 80165FBD 00?? Alternative of unlimited weapons of a specific type: 8016609D 00?? Quantity Digits to Accompany Weapon Modifier Codes 00 - Nothing 01 - Single Banana 02 - Multi Bananas 03 - Single Green Shell 04 - 3 Green Shells 05 - Single Red Shell 06 - 3 Red Shells 07 - Blue Shell 08 - Lightning Bolt 09 - Upside Down '?' 0A - Star 0B - Ghost 0C - Single Mushroom 0D - 2 Mushrooms 0E - 3 Mushrooms 0F - Gold Mushroom
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Warp wrote:
Apparently there is now a significant portion of participants who are outright trying to sabotage the project. They basically cannot go to a pokecenter to heal (and so that they will appear in that center if they faint) because whenever they go there, the vandals will do their hardest to go to the PC to release all the pokemon. Whenever they enter the pokecenter, the fighting immediately ensues...
Sounds like a Fool-Assisted Speedrun. ;)
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Patashu, thanks for posting. I was just going to do the same :) A lot of fun and excitement over at mariokart64.com this week! Here's the full background: On 2-Feb, Greg Ihnatenko mentioned a previously unknown effect of building up speed while not moving. I involves getting stuck in a wall for a few frames and we're calling this the Tenko boost. I replied "Greg, now THAT is worth testing with TAS". What he was describing (about using this boost to make a new type of jump on Choco Mountain) sounded very plausible. Later that same day, Greg created a topic titled New Shortcut!. He had cleared the wall on Choco Mountain and landed on the track down below while making progress on the lap. This was the first new shortcut in time trials in the last decade. Very big news. As soon as I saw his video I said "Greg, I want to go on record as saying I think this could result in a sub 10 second lap." Watching his video had given me an idea for a lap skip using the Tenko boost but differently. On 3-Feb, I had been trying my lap skip for about three hours with TAS with a lot of gut-wrenchingly close results but no success yet. I decided to do a full TAS of the Tenko boost shortcut that Greg had demonstrated combined with another wall jump used in the current WR. The result was approximately the time that Myles Bukrim had predicted (15"5X). Link to video Though I used a couple newer techniques at the end of the lap that no one is doing in realtime speedruns. Six hours later, I managed to successfully trigger a lap skip for a time of 6"17 and posted as such in the Mario Kart 64 message board (As well as Mark Jone's twitch channel http://twitch.tv/dntn31). This was yet another new shortcut, different from what Greg had found but using his Tenko boost. I called it the "Weathertenko skip". In Mario Kart, new strategies are generally named after their discoverer. Link to video An hour later, I optimized my original hit for a 4"91. Link to video Yesterday, I streamed a walkthrough of what I was doing to trigger the lap, frame by frame at http://www.twitch.tv/weatherton and also experimented with some changes. I plan to continue streaming my TASing from time to time as reception was good and people wanted to see more.
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
micro500 wrote:
It does seem like all the actions from the TAS played back correctly, just slower than the emulator. Someone who knows the game better than I can confirm or deny this.
micro500, first it was really cool to see you get an unreleased game to sync on my Everdrive64! Second, I just noticed this statement in Swordless Link's submission text:
Swordless Link wrote:
The YouTube video was created using screen capture software because Mupen's built-in capturer crashes every time you try to capture a video because it can't tell what framerate the game is supposed to run at.
Well, apparently Mupen didn't know what framerate the game is supposed to run at either. Seems maybe Mupen played the game at closer to 60fps while it actually ran on the hardware at closer to 30fps. Personally, I consider the input to be console verified, but the time reported on the console should be noted in the publication if it is going to be labeled as "console verified."
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Perhaps a preferable approach would be to create a save file the replicates the state of having legitimately unlocked these parts. Does anyone know how the save file format works for this game? If it's a big matrix indicating whether something has been opened or not, we could set the additional parts, manually, to being unlocked. That way we don't actually have to use cheat codes for the published run. The validation movie would be played and that resulting save file modified in a very specific way. Having said all that, perhaps we should first see what all can actually be unlocked through standard means, seems most everything perhaps can be based on that Gamefaqs link...
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Dolphin runs Mario Kart Arcade GP. Does it not run F-Zero AX yet? Even if not, it seems that the best that could be done is to actually pull in memory card information from an actual arcade cabinet. That way someone else can validate the menu by using their own memory card and trip to the arcade..
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Using cheat devices to obtain items is not allowed... You need a movie file that can unlock the items...
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Wow, looking great! Keep it up, this is such a great game.
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
I believe it was dwangoAC's wife who you saw knitting... My wife likes to help me work through Zelda, otherwise she may be reading on the couch next to me or watching TV in another room.
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Whoa, Arstechnica (my favorite tech news site) has published an article about this now! Very cool: http://arstechnica.com/gaming/2014/01/how-an-emulator-fueled-robot-reprogrammed-super-mario-world-on-the-fly/
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Agreed. Definitely use SRAM to access Very Hard mode.
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Nach wrote:
minglw wrote:
The voting choices I see are "YES, YES, YES".
Be careful where you click then, since they aren't all yes. If in doubt, ask someone else to read it for you.
Whoooooooosh
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
I didn't know what to expect as this was a secret even from me as I sat on the couch. This was fantastic!
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Thanks! It was a lot of fun to be a part of AGDQ 2014. In context capture of the Kart 64 section: http://www.twitch.tv/speeddemosarchivesda/b/492923053?t=9h52m44s
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Shigeru F'ing Miyamoto; E3 2001.
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
It's a fantastic site with a fantastic legacy. Thanks to everyone involved.
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
Another update. I got a very good start on Toad's Turnpike and then took a break to switch to BizHawk. My .m64 converted over thanks to M64reader.lua. I am now working on some Lua scripts to enable perfect power slides in a variety of situations (edit: before this script, it has been a very manual process to make them frame perfect so this will save time in creating the rest of the movie). I also need to re-find the memory address for actual speed and would like to find the memory address for "next item". If anyone would like to help find memory addresses, I would greatly appreciate it. Thanks to adelikat for all his help and encouragement to get me to switch to BizHawk.
Current Project: - Mario Kart 64
Experienced Forum User, Published Author, Experienced player (604)
Joined: 10/23/2004
Posts: 706
ALAKTORN wrote:
Weatherton wrote:
Well, last night I decided a different approach to the jump and.... IT WORKED!
but is it faster?
Actually, it was. :)
Current Project: - Mario Kart 64
1 2
9 10 11 28 29