Posts for micro500


1 2 3 4 5 6 7 8
Post subject: Decoding the questions table
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
I have found a question table that is used while in-game. Here is a lua script to decode it for you:
local start_addr = 0x020E9A00

for i=0,99 do
  local this_question_offset = start_addr + i*4
  local operation = memory.readbyte(this_question_offset + 0x374)
  local first_number = memory.readbyte(this_question_offset + 0x54)
  local second_number = memory.readbyte(this_question_offset + 0x1E4)
  
  local operation_string
  if (operation == 0) then
    operation_string = "+"
  elseif (operation == 1) then
    operation_string = "-"
  elseif (operation == 2) then
    operation_string = "*"
  else
    operation_string = "?"
  end
  print(first_number .. " " .. operation_string .. " " .. second_number)
end
Next step is to figure out where the table comes from, or if it is randomly generated.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
jlun2 had some good ideas for fun answers that I liked in the brain age thread:
jlun2 wrote:
The current TAS drew artwork. I think something that can also be added to, is to make accept wrong numbers such as "12 - 8 = 90" or something. Edit: Or make it accept something like 12 - 8 = *"Four" *2+2 *0100 *四 *Black out the screen and leave the white parts displaying "4"
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
jlun2 wrote:
The current TAS drew artwork. I think something that can also be added to, is to make accept wrong numbers such as "12 - 8 = 90" or something. Edit: Or make it accept something like 12 - 8 = *"Four" *2+2 *0100 *四 *Black out the screen and leave the white parts displaying "4"
These are great ideas! I'm definitely going to implement some for the AGDQ 2016 run.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
z1mb0bw4y wrote:
@micro500, could that be affected by the system touchscreen calibration from the DS settings?
Yep, that's definitely what it is. The first thing I did when I got the input working was try to calibrate the screen precisely. I took some measurements of the calibration points and then calculated the ADC values needed for those and inputted them. Somewhere along the line though my calculations must have gotten mixed up. The lines on screen ended up being ~1-2 pixels off from where I wanted them. It should be an easy thing to fix though.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
z1mb0bw4y wrote:
So if there are 40 possible answers and 120 entries that need to be made (aside from DoB and name), does that mean we need to make 40x120 = 4800 drawings?
Yep, we'll need 4800 sets of input, but of course every 40 will end with the same image on screen.
z1mb0bw4y wrote:
Ideally I'd imagine we would come up with all of the artwork we'd need up front, then find a way to add hidden pixels/shapes in side the lines to trick the recognition system into thinking we drew the right number. That way we can have the inputs set in stone for the drawing, and then the extra junk can be added after the drawing is complete. I'd imagine this would be the simplest way to do it, but I could be wrong =P
That is exactly what I was thinking: finalize the input to draw the pictures we want, and then manipulate them via hidden pixels or tracing back over lines already drawn to turn it into the correct answer. xy2_ has been helping figure out how best to handle that process. I did successfully input a 4 into the actual DS (that is not an emulator screen shot!). The position was slightly off from the drawing in the emulator, so I need to adjust the coordinates I give the DS. I'll post another update after my next stream!
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
My DSBot so far will support touch screen input, since that is the minimum needed to play Brain Age. My plan is to disconnect the touch screen controller chip and connect my own hardware to take it's place. The chip in question is a AK4181A. I have made progress faking responses to the requests for X and Y position from the DS. I have a little more work though to do to hook it up. The plan is to read the question off screen using a capture card, pick a set of input that will answer the question, and stream the input to the bot. We will need to some kind of OCR algorithm to do this, but from a few quick tests with my capture card I've found that the font and font size stay the exactly the same and the first character is always in the same position. It should be pretty easy to crop the image and compare against the known characters. * As for the social/story part of this, we will need 124 drawings (120 regular, 1 name screen, 3 birthday screens). I want to start with TASBot correctly answering the questions, and then slow devolve into madness. From there I've had ideas like trolling twitch chat or the AGDQ audience in general, drawing twitch memes, and drawing a rick roll. We have plenty of room to have fun with this. At the end we can further the TASBot/GDQMonitor romance by proposing to GDQMonitor. Other ideas are welcome! I've played around with the game in an emulator and found that the input detection is really broken. My next step is to verify that results like that are possible on the actual DS. After that we will need a way to take our 100+ drawings and draw them in a way that the game accepts them for any answer. I have found that there are only 40 possible answers that the game will give us. That may mean we will need 40 different ways to draw each picture to get the game to validate it. We will likely need a lua bot to automate that process. * I want to get the hardware working as soon as possible so we can start working on the story line. I want to have this all finished well before January if possible so that we are not rushing at the last minute. Any help is appreciated! I will be streaming my progress on twitch so stop by if you want to watch or help out! *Edit: I have found it is possible to get a static RNG seed on the actual DS, so we no longer need to plan to manipulate each drawing for any answer. We also won't need to use an OCR program to read the question off the screen since we will know them all beforehand. Here is the WIP script. This will likely change frequently, and I'll keep updating it in this post
  First 20 questions  
✓  1. [ 8 - 8 =  0] Correct answer [clear, precise]
✓  2. [ 2 * 9 = 18] Correct answer [sloppy]
✓  3. [ 3 + 8 = 11] Write out the answer in words ("Eleven")
✓  4. [ 1 + 9 = 10] Black out the screen leaving the correct answer in white
✓  5. [ 2 * 5 = 10] Write the answer as another question ("5+5" or "3+7", etc)
✓  6. [12 - 4 =  8] ais523's integral expression (the equation will resolve to the correct answer)
✓  7. [ 4 + 7 = 11] Wrong answer, cross it out, repeat several times, draw a question mark (7 > 2 > 4 > 9 > 18 > ?)
✓  8. [ 4 * 0 =  0] Write the correct answer, have the game detect it wrong. Erase and repeat several times. Write 42 as the answer, game accepts it as a 0
✓  9. [ 1 * 6 =  6] A hieroglyph
✓ 10. [ 6 - 6 =  0] Japanese symbol for Zero
✓ 11. [10 - 2 =  8] Blank answer [longer delay]
✓ 12. [ 7 + 3 = 10] Scribble non-sense on screen
✓ 13. [13 - 6 =  7] BSOD, including something like "MATH.SYS" at the bottom
  14. [ 6 - 3 =  3] "TASBot Rebooting", draw a slowly loading progress bar, around 2/3 of the way display "Gaining Sentience..." below the loading bar, fill the bar and then overflow it (over 100%)
✓ 15. [ 2 + 5 =  7] Drawing of TASBot, with a "operating system" version under it
  16. [14 - 7 =  7] "TASBot has recovered from a serious error"
✓ 17. [ 4 + 3 =  7] "Hello AGDQ 2016!" / AGDQ Logo
  18. [ 0 * 3 =  0] Say hi to the donation reader 
  19. [ 3 + 3 =  6] ?
  20. [ 4 * 7 = 28] "HYPE!" [pause and let the audience yell hype]

  Name screen
  
  Birth year (19XX or 20xx)
  Birth month
  Birth day
  (The date of our AGDQ presentation? The date of the 2014 presentation?) 

  Next 100 questions
  Desync ideas:
    Fake a desync by writing something, but have the game ignore it. Long pause. "Something is wrong...". Mention a desync and start fiddling with the electronics to find the problem. TASBot resumes and drawa a screen from Gradius. (thanks to Invariel and SamsaraTF)Rick Roll (bonus points if we can make the drawing sounds sound like the song) 
    Write "Desync" on screen, wait, then write "JK": https://www.youtube.com/watch?v=WwpFr9VZdng (thanks to Masterjun)
  Rick Roll (bonus points if we can make the drawing sounds sound like the song)
  Kappa
✓ FrankerZ
  "Save the Frames"
✓ Matrix screen 
✓ Drain Age (thanks to TotallyFerret)
✓ Jumpman
✓ Helix fossil
✓ Dome fossil
  Why not Zoidberg?
  Clippy: "It looks like you're trying to solve a math problem"
  Memes:
    Thanks Obama
    John Cena
    #Hashtags
    Chuck Testa
    Donald Trump
    Jackie Chan WTF
    [15:05:38] <Mothrayas> draw dolan, it shows some wrong answer initially, then add caption "gooby pls" and it turns into the correct answer
    Sanic and Dankey Kang
    Dickbutt (probably not GDQ safe)
    "Charmander" http://i.imgur.com/KPVrxlQ.png
    Slenderman
    Lenny face
    Y U NO JUST WRITE CORRECT ANSWER
    Nyan Cat
    Social awkward penguin/socially awesome penguin
    Strongbad's face
    "COMIC SANS!!!" in comic sans
    A grill
    Many doge. Such meme. Wow.
    Darude Sandstorm https://www.reddit.com/r/copypasta/comments/2ktzys/u_have_been_spooked_by_the_spooky_skilenton/
  [first screen] "AGDQ! SGDQ!" [second screen] http://i.imgur.com/iJoEpu2.jpg [third screen] http://i.imgur.com/hCmbALt.jpg
  Minecraft Creeper
  Bob Ross, happy trees
  <KennyMan666> A drawing of a Pokémon, where the answer is that Pokémons Pokédex number
  Make references to things that happened earlier in the marathon 
    Bart chalkboard with the text "I will not [something bad / funny that happened earlier in the marathon]" 
  If we're going with the TASBot+GDQMonitor romance:
    TASBot and GDQMonitor with a heart
    Bouquet of flowers
    A diamond ring

   99. Thanks to everyone who helped out!
✓ 100. tasvideos.org QR code (start with just the TAS in the middle, and then build the QR code around it)
We are ready for artists to start making images! See this post for more details. Finished images: QR Code (larger version)(links to http://tasvideos.org) Hieroglyph (AdituV) Japanese symbol for zero (AdituV) Dome fossil (Spikestuff, AdituV) Helix fossil (Spikestuff, AdituV) Drain Age (AdituV) Jumpman (AdituV) Matrix screen (animated) micro500 FrankerZ (Antiweasel)
Post subject: Answer frequencies
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
I noticed something interesting about how the game picks questions for you to solve. The screen only fits 6 characters including the operator and the equals sign, and if you hack the game to accept a different longer answer the 7th character gets cut off. This led to a theory about how the game picks a question. My thinking was that the game would never give you a question which would result in needing 7 characters. This would limit the possible answers since the problems are limited to addition, subtraction, and multiplication. A question like "12-8=4" would work, but "5x10=50" would be invalid. There is no way to write a question with an answer of 50, so 50 would never be a possible answer. I found there are only 40 numbers from 0-99 that fit this criteria: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 54, 56, 63, 64, 72, 81 To test this theory I wrote a simple bot to run through 100,000 questions and record how often it sees each answer. Here are the results: Larger You can see there is a set of numbers which were never picked to be an answer, and the ones that were picked match up to my list. This seems pretty convincing that my list of numbers is valid. Edit: Here is the data set if anyone is interested in looking at it
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
FractalFusion wrote:
If a runtime error (LuaScriptException) occurs in a registered function, BizHawk crashes.
Is this only with the N64 core? This might be related to issue 244 that I submitted. If not, the problem is more general than I thought and I'll update my issue report.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
jlun2 wrote:
What's that passcode at the end?
If you finished the prize world there was a challenge-response to verify that you actually did it. The basic idea is that you would call the phone number, give them that code, and then they would give you a 3 character challenge code. If you press start on that screen another section of data comes up where you can type in the 3 characters they gave you and it would give you a 3 character response. The person on the phone would then verify those characters and award you with your prize. The long code on screen is generated from a few things including the bytes in the working code that unlocked the prize world, your lives, your score, and the serial number you typed in at the beginning of the game.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
A big thanks to Alyosha for working so hard on reverse engineering the game and figuring out how what the encrypted machine code should look like! I'm hoping to be able to work backwards from that to determine the correct 8-byte payload to generate it. There are 8 bit twiddling algorithms involved with the processing. Of those 8 algorithms, 2 of them pull a bit off the RNG and add it to the working code, and repeat that 128 times. Working backwards that would mean we now know 128 bits from the RNG. There are only 2^16 possible ways to seed the RNG, so if we check each possibility it should be obvious when we've found a match, giving us the RNG seed for that algorithm. The RNG is seeded once per round, so working backwards again we should be able to find the seed for the round. The seeds for each round are generated from a much simpler process based on only the first 4 bytes of the payload, so once I know the RNG seed for the round I'll have a shorter list of possible payloads to try. 3 of the algorithms pretty much just move bits around, so those shouldn't be hard to deal with. One algorithm will be a bit tougher, and the remaining 2 algorithms use addition which is much harder to reverse. I'm still working on a strategy for those. Alyosha is only very confident about ~30 bytes of the machine code we have matching what the developers wrote. It's hard to say right now if that will be enough information to try this method. My goal is to work backwards one algorithm at a time until I hit one of the two algorithms that provide data on the RNG, but after a certain depth in the search the complexity will become too great. I estimate this will be around 8-9 algorithms back, but I'll know more as I get my code working.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
Patashu wrote:
There are 2^64 (18,446,744,073,709,551,616) possibilities to try, and we have to try them all until one of them produces valid-looking machine code.
When do you think you will finish? If you can test 2^32 possibilities per second, it will take you over a century to finish.
I don't have a good time estimate yet unfortunately. Our hope is that crowd computing will help reduce the time significantly. One thing that helps us is that we don't actually have to fully test every single possibility. If we keep thinking of this processing as a hash function we can say that this function has very poor collision avoidance, meaning that many inputs results in the same output. There are actually a large number of passwords that will correctly unlock the prize world. It's possible to detect when the processing becomes redundant before you completely process the input, meaning that you can stop processing it and save some computing time. The code in the repository does that right now and it saves a large amount of time. I also came up with a strategy to predict these collisions before you even start processing so that they can be avoided even quicker. We also have plans to implement a CUDA/openCL processor which should be pretty fast, and Omnigamer has plans for a dedicated FPGA processor that should be even faster. Combining all these together should hopefully turn checking the whole 2^64 space into a reality.
Alyosha wrote:
What is the machine code the first prize code generates? Can it be used as a guide to reason out what the resulting other machine code would be, for example the last instruction might be returning to a specific place in the rom?
Here is the decrypted machine code (badly) commented by me if you're interested. If I remember right, the game constantly jumps back into this memory, usually every frame, so its not just a one-time thing to unlock the level. The decrypted memory has to pass a simple checksum where the last 2 bytes are compared to a rolling sum of the rest of the memory. From some testing it seems like most results fail on that check. After that the game immediately jumps to the first memory address, so the first few bytes and onward has to be valid machine code, at least until the first jump of some kind. This will help us make a heuristic validator to hopefully figure out if the code is interesting or not. We'll do more analysis as we get a large sample size of false-positive results back. And if you're interested in helping out we could always use extra programmers. Let me know and we can certainly find something for you to do!
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
jlun2 wrote:
1. How's it going?
We've been spending time on getting a server set up so people can help out by donating computing time. I've decided to use BOINC since it makes it very easy for users to join in and help out. I've spent the last month figuring out how to set it up and get our application running with it, and Omnigamer is working on the actual server we will be using. There is still a lot to do, so we'll let you know when that is all ready for the public. Yesterday I worked on the brute forcing code a bit. I cleaned it up and broke it out into smaller pieces. I still have a little more work to do before I'm ready to prepare it for BOINC. This will be the first application we deploy. It will be slower than some of the other ideas we've come up with, but it will work well enough to at least get us started and allow us to test the server. Afterwards we'll go back to application development and get some of our faster ideas deployed.
jlun2 wrote:
2. How exactly did they manage to make it so complex to find out the code? :o
The best way to think of this code is as a one-way hash. The password you enter is hashed in such a way that, given the final result, it is nearly impossible to work backwards to find the password you entered. The processing behind this hash function is 27 rounds of 16 algorithms, for a total of 432 bit-twiddling steps being applied. After processing the password you enter, the resulting 128 bytes are used to decrypt a chunk of ROM by XORing with it to produce machine code. However, we have no idea what the resulting machine code will be since it is unique to that level. There are 2^64 (18,446,744,073,709,551,616) possibilities to try, and we have to try them all until one of them produces valid-looking machine code. The guys who made the game had it easy. Since they just XOR the result with ROM, all they had to do was pick a random password, run the insane processing routine they came up with, get the 128 byte result, and XOR it with the machine code they wanted to encrypt. They would then store that result in the ROM, and later when someone played through the game the same password would decrypt that machine code correctly.
jlun2 wrote:
3. How did they manage to make the 2nd prize world unplayable even by cheating there? Just how strong is the anti-cheating mechanism?
The encrypted machine code is unique to that level, and judging by the machine code used in the known prize world we assume it will set up some specific variables and run certain functions, but we have no idea what those will be. I cheated there by changing the map ID while I was in the carnival world. I think that worked because the machine code for the carnival world set up some things correctly for both prize worlds, enough that the secret world would display, but without running the correct machine code the music was wrong and level was generally broken. I had tried changing the map ID while I was in other worlds with no luck.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
I am currently working on a DS bot with the hopes of being able to play this game. I should be streaming my progress on twitch later this week if anyone is interested in watching.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
I have been working with Weatherton to finish the setup movie for MK64. I wrote a multitrack lua script for N64Hawk that should make creating a multiplayer N64 TAS easier. After I finish tweaking it and clean it up I will release the source code, and hopefully others will get some use out of it.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
Update on MK64: I took Weatherton's 4 player demo movie from Bizhawk and was able to sync it on the console using my bot! I'll get my updated code online later this week as well as a video. Now that we know it'll sync the next step is to create the actual movie we'll use at AGDQ.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
You don't need to download Mupen64Plus in order to use Bizhawk.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
Can you take a screenshot of the error so we can try to diagnose the problem?
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
TAG wrote:
this stale frame bug in most zelda jp roms... what happens? can someone explain?
The stale frame bug has to do with savestates, most notably in the Zelda games. If you loaded a state sometimes a garbage frame would be displayed when you frame advanced. This was due to a bad default plugin setting for those games which has been fixed in the gamedb and will be a part of the upcoming 1.8.0 release.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
I really like the Mario Kart idea, but as dwangoAC said we'll need runners who have the right attitude. However the twitch video Weatherton linked made it look really fun, so I'm less worried about that. Weatherton, can you start talking to some of the Mario Kart runners and see who will be at AGDQ and who would be interesting in participating if we decide to do this? The human vs. TAS idea is also interesting. The problem will be finding a suitable game that is interesting enough, and is sync stable to allow us to do this. I think the tension of runners racing the bot could be entertaining. Since the TASes won't be perfect the human runners might stand a chance. Would this be a game that the human runners already know and have practiced, or would this be a game that is new to everyone?
Post subject: New GLideN64 plugin
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
gonetz (the person who made the original Glide64 plugins) is working on a more modern plugin which he plans on being the most advanced plugin available. Right now he has an Indiegogo campaign to collect fund which will allow him to do rapid development on the plugin and hopefully have it released for January 2015. The campaign can be found here. You can also take a look at his blog for details on N64 video emulation. I am trying to get in touch with the developer in hopes of integrating this plugin with Bizhawk as soon as it is released. The samples he provides look fantastic, so I'd really like to see this plugin used in the TAS community. Unfortunately from what I can tell he doesn't want to release the plugin or the source code until he is comfortable with it's development, and without the money to work on it it seems like that might not be for a long time. If you can I urge you to donate before the campaign ends on September 5th.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
Omnigamer and I have been busy making progress. Omnigamer has integrated the code from tcrf.net into my code to make a hybrid/frankencode version. The code from tcrf used a number of 128-bit processor tweaks to speed up calculations, among other things. It also goes through the 64-bit space in a different way than my code. Instead of keeping the first four bytes the same and changing the last four, it keeps the last four constant and cycles through the first four. Omnigamer made a good point that in a way it makes sense. Since changing the first four bytes changes the processing much more dramatically than changing the last four, by cycling the first four bytes you get more diversity faster. One downside is that you are less likely to find multiple codes that work. That method also ends up repeating a large number of calculations, wasting time that could be saved. With my code I made an attempt to avoid redundant calculations by eliminating duplicate results after every step. With my code alone Omnigamer was getting 771 seconds for a 24-bit block of codes. With his new hybrid code that time has been reduced to 154 seconds. He has put his code up on the googlecode project if anyone wants to look through it. I've been working on a way to skip the redundant calculations all together by predicting when they will happen. I have came up with a method of tracking each binary bit through the processing, allowing me to see where they end up. I end up with a large number of boolean equations that can be reduced and evaluated. As the processing gets further along bits either become constant or are eliminated, which reveals duplicate results. Right now my code can frequently do 4 algorithms of look ahead before the decision for the next algorithm becomes equations that need to be evaluated. That evaluation will turn into a recursive algorithm to try all possibilities. Once I have this code able to look ahead 16 algorithms (1 step) I'm confident this method will be faster than processing an entire 32-bit block for 1 step. Depending on how fast it is running at that point I may be able to do more steps of look ahead. Right now we're focusing on optimizing the processing (software/FPGA/CUDA/etc). Once we have the processing fairly optimized we'll work on a distributed computing solution that you guys can run. Stay tuned!
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
jlun2 wrote:
How is it going?
I've figured out that after you finish world 5 the processed code is used to XOR a chunk of ROM into machine code. It then does a simple checksum on it, which if it comes back successful it attempts to run the code. I didn't see any other checks happening, which means we have to process the code all the way through before we can check it. We then need some kind of heuristics to decide if it looks like machine code or not. Omnigamer is taking a look at this processing from a more cryptography based standpoint, so I'm looking forward to seeing what he figures out. If it's still necessary we're thinking about doing the brute forcing on some FPGAs in the future. One other semi-breakthrough that I'm not sure if I've mentioned yet is that a number of 8-byte payloads result in the same 128 byte output (a collision). I believe I saw around 8-10 payloads that are close to the known payload that return the same result. That means two things: one is that the password entry in the TAS be shortened further by picking a faster to enter payload in addition to wrapping it into a password that's faster to type (what I showed in a previous post). It also means that if we can prove that two payloads will return the same result before processing them all the way through we can save processing time by only processing one. My current code is available here if anyone wants to look it over. I haven't touched it in a while, but it includes some optimizations for payload collisions. Similar processing is done 26 times throughout the game, so after every one of those steps I compare all of the working codes that are being processed and delete any that match. The more codes you process at once the more memory you need, but also the more likely you are to find collisions and be able to remove them. To give you an idea, I ran this code on a memory optimized EC2 instance which has ~240GB of ram, and did my best to fill that ram with codes to try. It took ~3 hours to do the first step to every code, and then IIRC ~85% of the codes were eliminated due to collisions. I'm stuck now on how to determine if two codes will result in the same thing. The nature of the processing is such that it can be hard to predict the result of some steps without simply doing that step. In the mean time I have plans for 64-bit optimizations to my code for minor speed boosts. Would anyone be interested in helping out via a distributed computing setup? It would involve you running a program in the background on your computer that would be processing codes. It would also communicate with a server to keep track of what has been done.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
nathanisbored1 wrote:
When I use a lua script (for Super Mario World) in the lua console, and then close the emulator while the session in the console is still open, then the next time I open the emulator, the lua console window won't open at all anymore. It shows up in the taskbar as though it's open, but it doesn't load or pop up, and I can't use it. I tried deleting the session file I had saved, but the console was still broken. Sorry if this has been reported, or if it's a problem on my end or something.
This sounds like Issue 195, which was fixed in r7072 and r7073. For now you can edit your config.ini file to fix it when it happens. Open the file, look for -32000 near lines relating to the Lua console and change them to 0, then re-open bizhawk.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
Finally this run is done! It looks very different compared to my WIP from years ago. I like most the new glitches! Unfortunately though I have to agree with mklip2001: the health-underflow kills a lot of the entertainment for me. I remember spending a long time optimizing the robot area in level 5 to avoid getting hit, and with all the bullet dodging it ended up looking like a scene out of the matrix. Instead you ended up just running through a lot of the enemies. I would have liked to have seen more dodging even though it would be unnecessary. As for co-authorship, I'm happy to see some of my input survived! I've had this game on my to-do list for years and never got around to finishing my WIP. It would mean a lot if you put me as a co-author, but I do realize that my contribution is very minor and I would completely understand if you choose not to. I'll leave that for you to decide.
gerard wrote:
There is a second prize level but it's pretty much locked away. You can always tweet Stephen Ruddy (the programmer) and ask him to look for the code. https://twitter.com/SteRuddy
I've spent countless hours on finding that second prize code. I hadn't come across that code sample, but I have my own project going for it: https://code.google.com/p/treasure-master-hack/ I'm working on optimizing that bruteforceing and at some point I'd like to massively parallel that process if people are interested in donating computing power. We might not find the code, but we can at least try. I also have contacted Haydn Dalton years ago, but didn't get any more information than what the Reddit hack-a-thon got.
Emulator Coder, Experienced Forum User, Published Author, Player (68)
Joined: 10/4/2005
Posts: 197
Excellent find on that invincibility glitch! This makes me think I can probably improve my run that I've been working on for a long time. I've been considering starting over with Bizhawk anyway.
1 2 3 4 5 6 7 8