Posts for Alyosha


Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Metal Storm is published so that means 16 to go! These runs are getting grueling, and the longest ones still remain. Not sure which one I will focus on next, maybe it's time to give double dragon another look (again.)
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Spikestuff wrote:
If we're talking about Atari 2600 specifically. [2579] A2600 Star Wars: Return of the Jedi: Death Star Battle by jlun2 in 00:08.73 [2226] A2600 Superman "pause glitch" by jlun2 in 00:11.42 [2243] A2600 Adventure "Skill Level 1" by negative_seven in 00:31.93 Are done, I am going over all, Atari 2600 TASes (pre-2015). Since there isn't that many 2600 TASes. I'm not looking into doing the downloadables though, only the YouTube encodes. Also, considering the recent progress with Atari 2600 on BizHawk. All Atari 2600 TASes would have to be updated in terms of new submissions, if I'm not mistaken.
I guess completely new submissions are one way to deal with it, but I just want to make sure. I don't think the times for games like Superman or Dodge Em will be improved, so will a new submission just be replacing an old run with one that is basically identical? The score in A2600 superman does not shake, and the first zero is not extra wide as in that updated encode, these are the kinds of bugs I am referring too. But I wasn't trying to be specific to A2600, just using it as perhaps the most relevent example.
Post subject: Publication Updates
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
So now that Atari 2600 graphical bugs are resolved, I thought it might be a good time to bring up Publication Updates again, since many (11) of the published A2600 runs contain obvious graphical bugs that are now fixed. Probably the worst case, mainly since it had the most going on in it, is Frogger, which has probably the worst encode I'm aware of on the site (not by any fault of feos, just the nature of emulation at the time.) Here is a poor quality temp that is still better then the shaky current one: Link to video In updating the encode it would of course be necessary to update the movie file (in this case just converting to Bk2, but in others maybe more would be needed.) So maybe there can be a way to formalize this process? There are other runs for other platforms that could use updates, but A2600 is probably the most warranted due to obvious defects, so I thought this would be a good place to start. I realize it's low priority, but I still think it would be good have a system in place. (And I think it's already understood that credit would remain with the original author, so I don't really consider that an issue.) Any thoughts?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
^ sorry for the spam, I'll make sure the next one is more complete before posting it so I'm not constantly adding things. Now that the TIA is sorted out things should change much more slowly. So it seems the simplest solution for Sega games that use F8 mapper but start in a different bank is just to list them out and make a mapper specifically for them that points the correct bank. Congo Bongo started in the wrong bank before: But with the latest fixes it now is correctly picked up and starts and runs just fine: With the implementation of this change, I am not aware of any more graphical glitches in AtariHawk, hurray! (I'm not counting Cosmic Ark stars since that behaviour is still not understood.) The TIA still isn't perfect, but I don't have any tests I can perform that don't work, so maybe I'll have to scrounge around for some test roms to make some of the really obscure accuracy adjustments. But I think next I'll work on that 45A0 mapper and maybe see if I can do something about the sound emulation.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
WhiteHat94 wrote:
I was testing out 4-2 on console and I couldn't get the warp. I can get really close but can't quite get it. It should work exactly the same as in Normal mode but I can't get it. It might just be that there isn't a frame where you can get hit and grab the armor at the same time because the enemy's angle and speed are different than in Normal. If the enemy dies and disappears that just means you are picking up the armor too soon.
I've tried every possible approach to it that I can think of without success. You may be right that the angles/speed simply don't work out. It would be nice if it was possible but can't win them all. I also tried the 1-2 warp as a continuation from normal mode without entering a password, but was also unsuccessful.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Wow! I did not see this improvement coming. I admit I looked at this run myself but concluded it probably couldn't be improved. Nice work Arc!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Samsara wrote:
Will do. Are you testing to see if the other warps work or is this the final version?
I've re-tested 4-2 in Cheez's old normal mode run and the warp works as expected there, so the reason is certainly that the enemy dies in expert but remains alive in normal, pretty unfortunate. Same thing seems to apply in 1-2, the bullet dies after hitting you so there is no conflict. I think it's done now.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Hurray for the Gumy Bears! It's progress at least.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
WhiteHat94 wrote:
Is there no way to get the wrong warp in 4-2? Looks like it should be close to the same as in the normal route but I haven't had a chance to try it out myself. Check out around 4:30 in the video for what I do in the normal route https://www.youtube.com/watch?v=xgqiEp82tF4
I tried repeatedly to get it but never managed. But maybe I am missing something. I also tried in 1-2 and 6-2 without success. EDIT: It looks like the crab like enemies die in one hit on hard mode from colliding with you while on normal mode in your video they remain alive. This seems to be the curcial difference. I'm not sure why the spike trick that worked for 2-2 warp doesn't work for 6-2 though. EDIT2: Oh! It turns out it didn't work in 6-2 because I got the armor upgrade in 4-2. Improvement incoming! http://tasvideos.org/userfiles/info/30990672414448074 please replace the movie file with this one, 6-2 warp implemented.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
feos wrote:
Alyosha, why won't you become an actual bizhawk committer?
Well I'm not really an IRC person, but I'm happy fixing bugs on the side, it's fun :) Also it's a nice break from TASing.
CoolKirby wrote:
Unfortunately, I'm still getting the strange clicking/popping sound. It might just be a garbage noise. Here's a sample of it. And you're right about NESHawk, it doesn't produce any sound when paused, just like it should. Looking forward to seeing those TIA fixes when you have them done! It's been kind of exciting following these thread and seeing what progress you're making.
Oops! You are right I uploaded the wrong file, NOW it should be fixed. Also, I finally got Tapper looking correct ! Here is Stella for comparison, note the slight graphical glitch at the end of each bar. This is the only graphical bug I've seen in Stella. And now here is updated BizHawk, having come a long way from not running at all, to missing some mugs, to finally looking correct: Tapper , Kool Aid Man, and Cosmic Ark are 3 of the harder games to emulate correctly, each one pushes the hardware and uses TIA quirks in it's own way so I'm pretty happy to have gotten all 3 working correctly (and with color clock correct code too, not just hacks.) But there is still more to do (try loading up Congo Bongo) so the testing continues!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I'm not sure why a sound would play when the emualtor is paused, but anyway I implemented a check in AtariHawk to only even attempt to play a sound if there are non-zero samples available. Now there is no more clicking sound. So try downloading again and make sure everything is fixed. Quicknes does seem to have a similar problem but NesHawk seemed to work ok. I've also been working more on TIA stuff and slowly getting it into a state where the last few bugs can be fixed. It might even be a small step up over Stella in some areas once it's done, since Stella has a graphical bug in Taper while BizHawk doesn't.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
var samples31khz = new short[_audioClocks]; // mono
it looks like _audioClocks is either 0 or ill defined when BizHawk tries to save a state (any time the game isn't just normally running, pausing for example.) It looks like some of the commits since 1.11.6 have changed how inconsistancies in states are dealt with in BizHawk. Somehow, this code worked before the changes (I don't know how it could have muddled through this, but it did) but now it gets ill defined and throws an error. Anyway, I patched it up for now, sound emulation is still rough so I'll change it again at some point in the future. Please download and build from here and let me know if it works: https://github.com/alyosha-tas/BizHawk
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Samsara is quite right that WIP was only synced up to that part in 4-2, sorry I should have clarified that. Things Are going smoothly, mainly because aside from lag reduction there really isn't a lot to do in the run. I should be able to finish up in the next day or 2.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
So in researching passwords a bit more it seems like you can get a pure 'start game on expert mode' password that is not just a continuation of a normal mode game. Basically I took Cheez's normal mode run and hex-edited the score and power up state to 0 at the end of the game so that the pasword generator will give me a password for expert mode with 0 score and no powerup, exactly the same as normal mode start up. The result is: F,P,P,M,K,2,P,7,8,6 I feel it would be more correct to start the game in this way then with the flame powerup, so I think I will go with it even though it will be a bit slower in level 1. http://tasvideos.org/userfiles/info/30857121059171598 Here is a WIP that implements everything so far. It still needs some work so probably 1-2 more seconds can be saved. It includes 2-2 and 4-1 skip as well as the new start from 0 password. This adds about 8 seconds to the run, but seems worth it to me.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
http://tasvideos.org/userfiles/info/30844685210962094 was playing around with the skip and found another one that skips all of 2-2! Still looking for other places this might occur, pretty neat! I also confirmed that this glitch occurs on NesHawk.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Well overall I saved 50 frames on password input. The password I am currently using is: 0,1,0,5,Q,R,L,2,9,V This removes most of the long distances between entries, while still starting the game in the same manner as the original password. For anyone interested, here is a brief overview of how the passcode works: RAM of passcode: 0300-0309 The last entry (0309) determines the offset for an array that modifies the other entries and stores them in 0120-0129 From there, 0123 determines level you start at, 0125 and 0127 determine lives and powerups you start with. The checks to determine if the passcode is valid is determined by: 1st check: 0129+0125+0128+0121=0120 2nd check: 0122+0123+0126+0127+0129=0124 Conveniently, the array operations that convert 030X to 012X are just subtractions, so you can maunipulate the checks just by balancing changes to the entries for a net sum of zero. It's pretty straight forward, but the number of possibilities are very vast. There are 8 possible arrays as well. I certainly don't plan to check all or even a large subset of them. Saving 50 frames is good enough for me!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
^ yeah that game is known to have quite a few improvements found and should be easy to improve, it's just a matter of someone sitting down and doing it. I do hope someone takes an interest in it!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
After talking with z1mb0bw4y it seems I will be taking over this run. The password was the first thing to get my attention so I decided to look at the code to see how it is implemented. Turns out it is pretty simple. The level you go to is determined entirely by the 4th and 10th entries, so keeping those fixed it is easy to modify the password to get checks to pass while still going to the correct level (i.e. expert mode level 1-1.) The current run uses B,1,0,5,<3,R,J,2,7,V (that's not what appears on the screen but that is what shows up in memory.) z1mb0bw4y used a slightly modified version, but I thought I could do a little better. I used B,1,0,5,<3,G,J,2,0,V which starts the level 18 frames faster then the published run. (It starts with C7 lives but hey not bad for a first attempt.) I'm pretty confident that I can save another ~20 frames here with some more testing. I'll post all my findings once everything is sorted out.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I'm making this thread similar to the AtariHawk one so I can sort things out easier. This thread is for general bug fixes in NESHawk, please post any issues you have. Things to emulate: DMA on multi-write instructions Exact power on and reset behaviour FDS / NES audio filtering / mixing second look at sprite limit VS Dual System microphone Things to investigate: FDS Metroid FDS Yume Koujou Doki Doki Panic chinese translation for TMNT3 VRC7 sound (ex Lagrange Point) Chaos World (CH) Save Ram Tests to Pass: scanline/scanline tvpassfail/tv Games that don't work: unsupported low priority Lots of pirate and multi cart stuff Test build: https://ci.appveyor.com/project/zeromus/bizhawk-udexo/build/artifacts
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Hurray! After staring at the code for way longer then it should have taken, I finally found the fix to Corvette zr1 Challenge. It turns out the culprit is this bit of code right here (line 304 in NES.Core.cs)
cpu_step &= 31;
This does not properly cycle through the CPU timing sequence. The correct code should be:
if(cpu_step == 5) cpu_step=0;
This also means you only need 1 iteration of the sequence. (3,3,3,3,4) , not the current 40 long one. Making this change fixes the graphics.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Tapper is a 1983 game by Sega. It has some pretty nice sounding music for a 2600 game. This game also happens to be an excellent emulation test case as it uses several hardware edge cases that I haven't seen in other games. It didn't work at all in BizHawk 1.11.6. This was because an undocumented 6532 instruction was not emulated correctly. Fixing this at least let's the game run. It also has some odd mapping going on. Apparently some of Sega's games have banks that are physically flipped, so even though this game uses a common mapper, the initial bank that gets pointed to is incorrect. But somehow through apparently shear luck the game still runs. This will eventually need to be fixed somehow, but I'm not sure exactly how yet. More seriously, in the above pic we see the middle mug is missing. The reason is due to the uderlying clocking delays in the TIA. When a 'start drawing the player' signal is generated, it actually happens 5 clocks before a pixel appears. What Tipper does is reset the player on the same clock that the signal is generated. On hardware this is fine, but without proper low level emulation of the start signal, this results in the player not being drawn at all in BizHawk. This is going to require quite a significant modification of the code to fix. I guess there is still a lot of work to do!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
You can try Bizhawk's movie import feature I don't know if it works for VBA but it will give you a head start. Also now that you know the camera can be frozen, another possibility is to just freeze the camera where you know you need to do a clip and then just wait until sonic gets there. This approach might work better, just another idea to test. Good Luck!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I'll try to look into this today. It's also possible that camera speed is capped in simple enough way that the ROM can be easily modified to remove the cap, but let's find out. EDIT: That version of VBA seems old so I am testing with BizHawk. So far I found that camera position is at 590X in IWRAM (2 Bytes per value.) So for example freezing bytes 5900-1 successfully freezes the camera at it's current X-posiiton. Apparently sonic can still move on the stage as collision detection is tied to Sonic's position not the camera's, so next I need Sonic's RAM values to see if I can make a cheat or lua or something to tie them together. Here's a LUA script in BizHawk that does roughly what you want, so it is at least possible to do . This produces a bit of camera shaking, but it should always force the camera to be on Sonic.
while (true) do
	
	cam_x=memory.read_u16_le(0x5900)

	sonic_x_low=memory.read_u16_le(0x59E8)
	sonic_x_high=memory.read_u16_le(0x59EA)

	sonic_x=sonic_x_high*65536+sonic_x_low
	
	gui.text(50,20,string.format('%d',sonic_x))
	gui.text(90,50,string.format('%d',cam_x))
	gui.text(90,50,string.format('%d',cam_x))

	memory.write_u16_le(0x5900,math.floor((sonic_x-30000)/256))

emu.frameadvance();

end
This one works in BizHawk, so you might want to test it out there in level 1. The 30000 there is just an offest from the starting post. It might be different in every level. At any rate this should at least get you going in the right direction.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
https://github.com/TASVideos/BizHawk/issues/487 I believe I solved this issue with Little Ninja Brothers (E) cpu_sequence_PAL in NES.CORE.cs should be 3,3,3,3,4 not 4,3,3,3,3 The clock on PAL NES is divided into 3.2 PPU clocks per CPU clock, so we would expect the extra full PPU cycle to appear on the last CPU cycle, not the first. With this change there is no shaking. This also has impact on Corvette ZR-1 Challenge but looks like other timing issues are still effecting that one. EDIT: The other cart mentioned in that issue report, Pro Action Replay (E), appears to not be properly recognized as PAL. When I use the manual override to set it to PAL there is no shaking in that one, even in the current version of BizHawk.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Finding a way to tie camera position to sonic is probably the easiest solution you can hope for, but there is no garauntee there is a simple way to do it. What RAM addresses do you currently know? Have you found and tried manipulating camera coordinates? If you have a basic RAM map of the game I can try to help in making a camhack, it's something I'd be interested in experimenting with anyway. What emulator are you using? I had to solve the same problem of TASing with off screen characters in Donkey Kong Country. What I did was make a LUA HUD that would display an outline of the terrain around Diddy Kong with a representation of Diddy centered on the screen (kind of like a radar.) This was very labor intensive so I'd only recommend it as a last resort, but it proved invaluable.