Posts for Alyosha


Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Any other bugs besides Popeye?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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 (3536)
Joined: 11/30/2014
Posts: 2733
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.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
simple images http://tasvideos.org/userfiles/info/62662224531128082 I found a pretty big improvement today in 6-3. It is about 6.5 steps faster. Up until now all the improvements have just been optimized block pushing (basically sokobon style) but this is an actual strategy improvement. The picture above basically illustrates what's different. Lolo's eggs can be shot through chests, and can skirt trees half way through as long as it's only one tree (they can't go through 2 trees right next to each other.) Taking advantage of the level geometry I realized I could shoot the rocky while he is still blocking the medusa. this takes some steps to set up but is faster overall. I don't recall such strategies being used very often in Lolo games (maybe I'm just not remembering) so I wonder if this type of trick is more widely applicable.
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/62617407404729199 Finished my first pass through the game. the only other place I save time so far is in 17-3 where I saved 3 steps (bringing the total saved to 6 steps overall.) Unfortunately some desyncs in enemy respawning cost 4 frames towards the end of the game. I'm not entirely sure why, I didn't change anything from 11-4 onward and suddenly got desyncs starting at 17-3 (before I improved it.) it's unfortunate but not really sure what I can do about it, I'll try to clean it up as I go over everything again. At this point I think I can narrow down which levels have a realistic chance of being improved, so the second pass should be a bit faster.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I've only been testing the GBC version so far, and saveRAM and the lua script both work fine for me. Yeah it looks like saveram isn't in the code path of reboot core from what I see. Flush Saveram is the manual method to save the saveram. If you want to save it at any time, use that. But remember it won't load unless you have 'use existing saveram' set to true.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I tested wario land II and save ram seems to work fine. Fortranmn did you use File->SaveRam-> Flush SaveRam? I'll start looking into memory domains. EDIT: GBC version seems to be fine, was it only GB version you have problems with jlun2?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
never mind it's not needed after all, I just needed to move the frame processing to the correct spot, not sure why I had it the other way around. Should be good now with _vidbuffer removed from the state.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
yeah _videbuffer is needed in the state, it's different from framebuffer. (At some point I really should standardize things a bit more.) Well I added it back in, tested and is fine now.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Oops yeah the buffers are left over copy-paste from other cores that have variable frames. I removed them now. I checked Bowling on both O2EM and MAME (via archive.org) and they have the same behaviour of no longer accepting input once the game over screen comes up. I checked trace logger and and vblank code is still running, it's just not checking for inputs. It looks like it's just waiting for a reset. It would be good to have a real hardware check, but I don't have a console. PAL should be ready for testing, it's probably got quite a few bugs still since the hardware is wired up slightly differently, but mostly it should be working.
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
CLChambers00 wrote:
The most interesting point for the TAS on this game is that in order to get the best and fastest stats so far in any% is faster than any TAS could ever do it because it requires RNG set up from the previous attempt and the TAS timing would include that entire setup.
Do you think sub-frame inputs / resets would be able to cut down the set-up time?
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Here is an interesting case of a game that was made both in a console edition and also released as a 'emulator version' Happy Bird! is a homebrew game that has a console version that doesn't work right in O2EM, so an emulator version was made for it as well. I think this is a rather unique example of a combination of factors where existing emulation is sufficiently poor, and with too little demand for much attention, where game devs. have to re-target games to the emulator. Anyway, the 'emulator version' does not look correct in BizHawk (which it shouldn't) and the console version does look correct (which is good news for me since that game uses timing tricks similar to Blockout.) Here is a side by side of emulator version (left) and console version (right):
Alyosha
He/Him
Editor, Experienced Forum User, Published Author, Expert player (3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I do like the look of the +15 contrast example, though I have to admit the libretro shader does look closer to correct for the red and yellow, blue looks more accuracte in the +15 contrast though. But that's just me and I don't know how well the picture represents reality, nor do I own a GBC to check.
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/62554681489154971 I found my first improvement in lolo 3. It is over half way through the run in level 11-4. I saved one step. You can fast forward to frame 129692 in the above movie to see it. The levels might be a bit more linear then the first two games but still I'm quite amazed how optimized Nitrodon had made this on his first try. I found not a single frame improvement until now. EDIT: http://tasvideos.org/userfiles/info/62570344549002605 saved a few more steps in the same level