Posts for Alyosha

Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Cool even more punch out improvements, definite yes vote.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I made optimizations / accuracy improvements / cleanup to GBHawk's serial port code today. It is noticeably faster now, especially in 4 player mode. Normal GBHawk is faster too by about 5-10 fps. If anyone notices any issues with the linking now let me know. I tested a lot of different cases and everything still seems to work though. Also the VRAM access glitch above is still under investigation, definitely some new behaviour there but details aren't nailed down yet.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Cool to see an improvement to punch out. I wonder though if this is really the only improvement possible, seems like some things are only known empirically, are there any other possibilities out there? Yes vote regardless. Also why isn't McHazard coauthor?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
That's cool, I thought that didn't work for punch out, I must be mis-remembering. Maybe it's worth a console test too, would be cool to see a console verified punch out run. EDIT: oh cool it's uncancelled, giving this a yes vote, I like the glitch and the different strategies.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Personally I'd like to see this as a published category (but I'd also like to see it not done on FCEUX.)
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
http://tasvideos.org/userfiles/info/63149161706437437 Here's another WIP with all of world 3 and part of world 4 done. This is more like a rough draft, as I'm just trying to get through the game to have a complete WIP, but all of the major timesaves are included I think.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Some interesting developments have been happening in gameboy console verification. I looked into this for jlun2 in Wario Land II:
jlun2 wrote:
While routing for 100%, I asked TiKevin83 to check for if the OoB in this game was emulated right by given them input files for any% improvement. An input file that did not soft reset the game synced back, but the one that did use a soft reset to alter OoB layout did not.
This was an interesting desync because it involved the cpu accessing VRAM (0x8B2C) when it was still in use by the ppu for rendering. Normally this would be expected to return 0xFF, but the way the desync happened this could not be the case. In fact, the underlying value was already 0xFF, so whether or not the cpu could access this address, it should still be returning 0xFF. But the console verification attempt revealed that this could not be the case, what needed to be returned was a value for a coin. The only clue about what might be happening is that this access was blocked on the very last pixel of rendering, right before access was restored to the CPU. This is just speculation, but I think what happened is that access is restored to the CPU, but it's too late for the address latch, so what gets returned is just the last latch on the bus that the PPU read. The PPU is always reading from memory, even when it has all the tile data it needs already. Sure enough, if I implement this behaviour I get a coin and desync exactly as in the console verification attempt. Also, execution between Gambatte and GBHawk is identical cycle for cycle up until this exact moment. Some test ROMs will be needed to determine if this is truly what's happening, but I don't see any other way for a value other then 0xFF to be returned without this behaviour. I have it implemented in the current version of GBHawk and hopefully a console verification of Wario Land II can work with this. ___________ Also in the realm of Wario Land, there was some speculation on whether or not the game end glitch run was actually possible on console for wario land 1. The thought was that the STOP would not be able to escaped from because interrupts for joypad were not enabled. However some test roms from https://github.com/AntonioND/gbc-hw-tests require STOP to be returned from with joypad press even if interrupts are turned off. So the mechanism itself should work. However, the STOP happens on the same frame buttons are already being pressed. It seems that in this case STOP is not exited. So maybe this will need subframe timing in order to release the buttons before the stop.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I loaded up the 2 player TAS to check things out. For the cutscene skip, you have 1 frame to hit the start button 28 frames after you clear the screen displaying the level name. You can't hold start before that time and no other buttons have an impact, no wonder that went unnoticed for so long! I'll edit this post if any of the others are easily reproduced. EDIT: For the glitch in level 2, did you press any buttons to respawn? If you didn't press any buttons then this can be explained with a random bit flip at address 0040 going from 0x0E to 0x0F. If I do this while no turtle is spawned it automatically respawns a turtle and ends the stage exactly as in the video.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Impressive, but this is the donkey kong country thread and that is for DKC2. Or is it applicable to DKC 1 as well?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
nice finds! Was this done on console or emulator?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Zombies ate my Neighbors is done thanks to the work of Allbeert, it's been over a year since I last removed a run from the list, so a little new progress is nice!
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Thanks for testing, I can start looking at those in a couple weeks.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Over the years I've seen many things that 'just need someone to do them' that never end up getting done, but that being said seems like mGBA is at least accessible to implementing advanced features in. Guess I'll start looking more closely at SNES stuff. Thanks for the feedback.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
After porting GBHawk to C++ produced poor results, I've been thinking of taking a different path forward in terms of a follow up to MSX. I was originally probably going to go with something MC68000 based, but with GBHawk performing so poorly that wasn't going to work the way I envisioned. That combined with my general lack of interest in such systems led me to look elsewhere. I haven't really settled on anything yet, so I wanted to throw some ideas out there and see what people think. SNES + sub-frame capable. The snes CPU offers a lot of design possibilities without a huge number of instructions. I think I could learn a lot from it. The down side is obviously the time it would take on the PPU side, which I originally didn't want to touch but now seems more attractive from a design perspective. Would it be worth it to anyone to have sub-frame capabilities like SubNESHawk, or is lsnes good enough already? Could a new SNES core with more control improve console verification efforts? GBA + sub-frame + linking. I know mGBA has linking, and someone could probably get it working before I got a new core working, but what about sub-frame stuff, any utility there? I'm trying to combine my own interests with things with real utility. I'll still be working on MSX, I just like to look ahead a bit.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I made a new setting in GBHawk to sync memory domains to VBlank. This makes LUA scripts for GBHawk more consistent with Gambatte. This also helps in comparing memory in Hex Editor. NOTE: this only works for individual memory domains, not system bus. Also it doesn't apply to writes, writes always go to the actual underlying memory. You can turn this on or off anytime in the settings menu.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I'm done with lolo games for now. I like tasing them but it's a huge time sink and I have other things I want to get done. Maybe next year for 2J.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
@jlun2: I fixed the cart RAM domain in GBHawk so your lua script should work now, please retest and let me know if everything is good. This was unique / troublesome enough that I decided to write down the technically details, anyone interested can read on. This was actually a pretty weird case that shows how important it is to watch out for garbage collection in managed code in C#. What went wrong is here:
var CartRam = new MemoryDomainByteArray("CartRAM", MemoryDomain.Endian.Little, cart_RAM, true, 1);
This function takes the whole of cart_RAM as an argument and used in an assignment :
Data = data (where data is cart_RAM in this case.
Data has a setter:
public byte[] Data
		{
			get => _data;
			set
			{
				_data = value;
				Size = _data.LongLength;
			}
		}
_data is another byte array that is internal to the memory domain. Internally, this assignment is an assignment by pointer. _data gets a pointer to cart_RAM, even though it doesn't look like it. In c++, this would be what you want and expect. But in C#, the underlying domain cart_RAM can be moved without you knowing, in an attempt to manage memory for you. From here on is somewhat speculative, but what I THINK is happening is that memory management moves cart_RAM, but the original copy can't be deleted because their is a pointer to it. So you get left with a stale copy of cart_RAM that the memory domain points to while the actual cart_RAM array getting updated as it should. This, is super annoying. The solution is to just use the delegate method of defining domains that doesn't rely on a pointer internally. The weird thing is that other cores (ex NESHawk) use this method of defining memory domains by default and I've never seen a case where this has happened before. Probably it should be used for static arrays only (or not at all if it's just going to leave a stale copy clogging up memory.)
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
That page is cool! I'm glad to see console verification advancing so rapidly! I would add a note of caution about NES verification though. Some bots do not respond to DMC glitch like a real controller does. So, runs made on FCEUX which does not emulate DMC glitch reads at all, will appear to verify on a bot that also does not implement them. I remember working through this issue with True on Ninja Gaiden a while back, here is the relevant post: http://tasvideos.org/forum/viewtopic.php?p=442241#442241 Whether or not runs should count as verified with non-standard controller behaviour I think is something that should be detailed more carefully, at least in my opinion. (This is specifically important for Ninja Gaiden, which uses DMC a lot.)
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Any other bugs besides Popeye?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Here is one of the best homebrew games for the O2 that is now finally working in BizHawk. This is one of those games that relies on a lot of hardware edge cases and revealed several bugs in the core. Kill the Attacking Aliens uses some non-intuitive properties of quads to get some really detailed graphics effects that are unique to this game. It's one of those impressive homebrews that could really have helped define a system if it had come out in it's actual lifetime. This is probably one of the few O2 games that really would be interesting to TAS, so I'm glad it's looking correct now.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
After a quick google search of that is, I would say no. internally everything is a pixel array.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I took some time today to redo the vectrex display algorithm. It now looks MUCH better. It's a bit slower now, but I think it's worth the great increase in display quality. Getting that characteristic vectrex glow is still really hard though, I think this is as good as I can get for now.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
I made quite a few bug fixes: - fixed collision detection - fixed 12k games - tuned the colors a bit - fixed some characters in the built in set - Fixed sound interrupts @phoenix1291: thanks for testing. I think the graphics at the bottom of frogger brazil are just because it's PAL 60 (BR) but emulated as PAL 50 (more scanlines), I haven't added a mode for that yet. Some of the other bugs should be cleared up though.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
nymx wrote:
Great job Alyosha! I knew you stated that you were working on this, but didn't realize it was coming out so soon. This is a favorite series of mine and I'm glad to see how optimized it is. Yes vote on further optimization.
If you like the series I would encourage you to try finding some optimizations yourself. Sometimes having a different perspective is all it takes to find that elusive improvement that no one else was able to see. EDIT: Also yeah this run came together quicker then what I thought too. This is mainly because a lot of the levels have only one solution from an overall strategy perspective. Especially the later levels, although they can be quite long, there is really only one thing for you do to do, and Nitrodon already did a very good job at doing that optimally.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3572)
Joined: 11/30/2014
Posts: 2744
Location: US
Why is the GB bios being shown when there are colored graphics? Did you colorize the encode or does it run on emulator that way? If so then this is an error.