Posts for AdituV

Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
Yes, and not even that hard. I'm currently working on something similar that can easily be adapted to it. A prototype should be ready in a couple of days; prod me if I don't post it.
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
Samsara wrote:
Working in single pixels at 45x49 and resizing to 180x196 in Irfanview (specifically resizing, not resampling) should always produce a workable result with 0 bad pixels.
The 45x49 grid is a really easy way to guarantee a picture will have 0 bad pixels, but it restricts where you can place your 4x4 squares, so you can't make all valid images this way. As a silly example, have two simple images: This image is possible to draw with Samsara's method. This image is not, as the gap between the two lines isn't a multiple of four. As a further example, the Drain Age and Hieroglyph images, and probably others, cannot be created with Samsara's method. In my opinion, it's a great way to get started on a drawing, but you may well want to manually touch-up the 180x196 version to improve slanted lines and curves.
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
CoolKirby wrote:
How do they expect anyone to beat that in real-time if a TAS finishes with one second left?
Simple: collect more time-boosting items!
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
I found it an interesting watch, but felt that much of what was happening was going over my head. I think a commentated encode (or subtitles) would be pretty useful for this category.
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
The lua function bizstring.split returns a lua table with indices starting at 0, when the convention in lua would be 1. While not strictly a bug as it works, it does prevent me from doing
local parts = bizstring.split(str," ");
for _,v in pairs(parts) do
-- ...
end
As I need to get each part in the order of occurrence, but the 0th index seems to be shifted to the end. For example, this gives me the output "b c d e a" rather than "a b c d e". There's an easy temporary workaround using a numeric for loop, but it's still a slight pain :)
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
After some computer issues, I'm back in business! On the subject of the number of frames for moving: I can't believe I didn't find that, but then I was using a binary search to find when I could next move, assuming the region where a move could happen is continuous and consistent (it's not). I just tested it out myself now, and found these results:
  • Gaps: 9,6,6 - 4 moves done
  • Gaps: 9,7,{6,7,8} - 3 moves done; last move eaten
  • Gaps: 9,7,9 - 4 moves done
From these results, it looks like if you don't move again on the first frame, you can't continue with the 7-frame movement pattern, and have to restart with the 10-frame. At least it's an easy pattern to TAS with, and the memory watch you found will really help :) I'm just knocking up a lua script to overlay that memory address to make it easier to see when moves can be inputted; I'll edit it in when I'm done. ---- Edit: Basic lua script to watch the memory address found. It unfortunately is more a "are pieces moving" address; it doesn't work to see when a move can be input following a shape complete animation. I'm looking for one of those now. I've found an almost-there address: 0x5410. The value returns to zero the frame after a move is first possible again following a join, which isn't ideal. Update! Found a better address: 0x6A88. This byte has the value 2 while a shape is joining; otherwise 0. Updated script now linked. ---- Another edit: Updated Lua! Automatically does the best input based on the memory addresses mentioned above; press Ctrl+I to open a form to type the solution into in the format used by qqwref's website. (Script moved to gist for easier versioning, etc. Can be put in a github repo if we feel like it.) https://gist.github.com/adituv/6bcc89d7d125e604b0b8 ---- Should I just double post?: Using your new awesome single-join routes, and actually measuring the time taken, I've improved Stage 1 by a further 60 frames, now complete at 13669. The only real improvement now that I can see is a single-join 1-16. http://tasvideos.org/userfiles/info/25419665607784644
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
I just wrote a utility to generate the input log from the format used by qqwref on his website. http://jsbin.com/foqerisore/1/edit?html,js,output I'm currently working on Stage 2, but there are 3 possibly improvable stages within it still. ---- I also suspect that it may be possible to get faster times by dropping frames near the end of the puzzle. For example, on my current WIP of stage 2-7, ending either one or two frames later loses me an additional 3 frames, measured from last input of the stage to control regained at the menu. The ending animations shown are the same. Depending on the reason for this loss, it may also be possible to gain frames. However, I'm wondering whether it's merely waiting for a previous animation to complete before playing a new one, in which case such gains are unlikely.
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
Ooh, great, of course I'd like to collaborate! Would you mind either making your program open source or sharing it with me? I was just starting to plan my own Denki Blocks AI already... :) Also, about memory requirements, how much sharing do you do? Are any of your states degenerate? If that isn't helpful, how about using depth-first search, but limited to a number you know is possible for a solution?
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
5) The image inside the logo shouldn't steal all the attention away from the text, however. (From EncodingGuide/Logo)
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
I'm new around here, and didn't know that, no :). I hope it helps, anyway!
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
The following happened in git commit 9e36096... When trying to remove the last branch from TAStudio, an exception occurs, giving the following error: System.Collections.KeyNotFoundException The time before this that I tested, I instead got an error about a collection being changed after creation of an iterator; I unfortunately forgot to save the text. The knock-on effect of this is the following error upon trying to create a new branch afterwards: System.ArgumentException And then the whole tasproject (at least in my case) didn't save properly. If it helps, I made a screen capture of me causing this error: Link to video
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
So, many years later, I resurrect thee with mention of progress! I'm not convinced it will be a brilliant TAS to watch, but I thought I'd summarize my research so far anyway: * Text is SLOW. Intros are boring and unskippable. The fastest way through text is to hold A from the frame before characters start appearing to the frame before the red A button appears, release, press, release. * During puzzles, the minimum gap between moves is 9 frames (i.e. you can move every 10th frame) * Each completed shape takes about 85-90 frames. I haven't found a consistent number for this. * "Nice pair!" takes about 180 frames, or 18 moves. Well worth skipping at the cost of moves. While the third point can be mitigated by forming two shapes simultaneously, I assume that's impossible for the majority of levels while going at a reasonable pace, to come up with the following time estimates for the first stage's levels: https://docs.google.com/spreadsheets/d/1TdpN7CvHJjB83i2X-MG4hhWs4Ekixljh1znb5TpwRVI/edit?usp=sharing I also found this website of someone who wrote a program to find optimal solutions, giving us a partial list to work from: http://mzrg.com/games/denki/index.shtml ---- Update: I have a pretty decent WIP of Stage 1 now complete: BizHawk movie.
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
Raelcun: I directly traced Kappa when trying to figure out how you did the hair. If you can use it to improve the both of them together, feel free to do so! Unfortunately I forgot to save the raw file with the various layers, but here's the merged version: http://i.imgur.com/fMWdxHW.png
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
Another option to consider is to do a 1-pixel white border between the body and the shadowed tail. I'm not sure which will look better
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
If I'm correct, MHS--L Spiro is a generic memory-hacking piece of software for any program, so the addresses you get are relative to the start of your emulator (BizHawk?)'s address space. However, the memory addresses in lua scripts are relative to the start of the game's memory as stored by the emulator. You'll need to use the built-in tools (Tools > RAM Search) to find the correct addresses relative to the game's memory. Edit: ninja'd by Mothrayas... *shrugs*
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
marzojr wrote:
And since total energy is related to mass by relativity, the mass deficit in the helium atom is actually a relativistic effect.
I was unaware of this; could you expand on how mass-energy equivalence is a relativistic effect please?
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
Warp: it's called the mass defect. The strong nuclear force, which holds the nucleus together, has an effect curve that looks roughly like this: At this typical distance between nucleons (i.e. neutrons and protons), the attraction of the strong force outweighs the repulsion of the electrostatic force between the two protons, leaving the nucleons in a lower energy state compared to being a bit further apart. If you were to move the four nucleons much further apart, they would gain potential energy due to moving against the field, in a similar way to gravitational potential energy gained by something when you lift it up. Now imagine two systems: one with the four nucleons in the 4He nucleus, and one with the four nucleons "infinitely far" apart (that is, negligible force exerted on each other). There is a difference in energy between the two systems: the nuclear binding energy, or the energy required to split a nucleus into its components. Because mass and energy are equivalent (E=mc2), the systems have different masses, with the difference in mass (Δm) proportional to the difference in energy (ΔE): Δm = ΔE / c2 This happens to be a great enough quantity for 4He that it is greater than the difference in mass between two protons and two neutrons.
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
I've fixed up the fossils with as few changes to the original lineart as possible, though I feel like there's something off about the dome fossil that I can't quite put my finger on. Maybe it's just because I never liked the original sprite for that =]
Experienced Forum User, Published Author, Player (74)
Joined: 8/26/2015
Posts: 70
Spikestuff2: Nice Flareon! 34 bad pixels though, and unlike the fossils, some could throw off line appearances :/ Where do people stand on references to past events? I recreated one of the most tense moments (imo) of this year's SGDQ tetris block for Brain Age, but wasn't sure whether that sort of thing would be suitable, preferring last-minute-rush references to the coming AGDQ. Picture in question: http://i.imgur.com/OchvvAP.png (semi-WIP) Edit:
Masterjun wrote:
Implementing this in the plot could be funny I think: https://www.youtube.com/watch?v=nGeYiej6SeU (resulting in something like this)
I love this. Seriously, I want to see this.