Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
http://tasvideos.org/userfiles/info/43648137360728408
Your guess is correct!
By taking bullet damage on the same frame as passing through the barrier, you are able to skip it.
In this movie I poked the second guard onto the barrier just in case I needed him for somehting, but it's probably just as well to kill him.
EDIT: Here is a much cleaner and simpler demonstration of the skip:
http://tasvideos.org/userfiles/info/43648327823251606
The unduck and hook throw are precise, but should be doable real time I think.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Woah crazy find!
I might look into this one, would be cool to have an updated TAS with it.
So, I took nelifox's run and I did NOTHING except edit out the part where he blows up the generator to turn off the first barreir.
Then I replayed the run as is, and ended up on the other side of the barrier! 0_0
I haven't looked at a trace log or anything yet to sort out what happened, but if it's this easy maybe I'll try the second barrier too.
http://tasvideos.org/userfiles/info/43646321347282670
EDIT: the bazooka shot and pressing down to release the hook are irrelevent. All you have to do is swing at that point and you'll make it through. Seems like it's just a metter of lag from the two enemies and possibly the elevator.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
With some help from gekkio I fixed naughtyemu. I also got caught up on a couple newer tests just recently released.
Progress is reasonably steady but emulator performance is starting to take a hit. I might take some time and go over the code again and look for obvious speed improvements. This hasn't really benefitted me at all in the past, but maybe I'll find something this time, I'm really hoping to stay at 4x speed at least.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
That will be something that is added with color gameboy support.
EDIT: Thanks to Shonumi on NesDev for pointing me in the right direction, garbled screens on Kirby and Wrestling are now fixed.
EDIT2: I also fixed Teen Jeopardy and Prehistoric Man music.
Remaining:
-Pinball Fantasies
-Beast Fighter
Tests:
-naughtyemu
-dycptest2
- hblank_ly_scx_timing-GS
- intr_2_mode0_timing_sprites
With these improvements I'm now pretty confidently ahead of Gambatte in accuracy, although not in capability.
I have asked on NesDev regarding Beast Fighter. The game works fine in both GB and CGB on actual hardware, but no one quite knows why the status bar isn't showing up in emulator. That one will liekly need a test ROM to work out.
LIJI32 (Sameboy author) seems to have cracked the case of Pinball Fantasies some time ago, so I'll just have to implement the logic described there (I think, I haven't studied exactly what the proposed behaviour is.)
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Fixed:
-Link's Awakening
-Super Hunchback
-Altered Space
Remaining:
-PinBall Fantasies
-Teen Jeopardy
-Kirby's Dreamland / HAL Wrestling (Same bug i believe)
-Prehistoric Man intro audio
-Beast Fighter
Tests:
-naughtyemu
-dycptest2
- hblank_ly_scx_timing-GS
- intr_2_mode0_timing_sprites
If anyone is aware of any other bugs please let me know.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Of course. Overall the gameboy hardware seems less tempermental then NES, so my hope here is that this work can lead to many more console verifications.
Which leads me to the first real roadblock in the development process. I've been working on the test rom hblank_ly_scx_timing-GS. This test rom tests the timing of HBlank interrupts in the presence of x-scroll. The test itself is not that challenging, mainly because I built the core already knowing that I would need to pass it, so I planned out the architecture ahead of time.
Unfortunately, when it came time to actually run it, it failed.
It turns out I needed to add 2 clock ticks delay to the interrupt firing to get it to pass. This seems unnatural, and I'm not aware of any reason why it should be true. Furthermore, the test dycptest2 indicates that some combination of write timing and ppu latching is off by 3 clock ticks.
Since timings in the gameboy usually occur in multiples of 4, values of 2 and 3 are difficult to resolve. So, it seems I still have a long way to go here.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
This is a fascinating challenge. I wonder if any academic type of work has been done on anything like this. It seems relatively easy to speculate on what strategies might be best suited to win quickly (like samurai goroh has) but I can't think of an easy to determine what game is the fastest possible.
Good luck at any rate Warp.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
1,3,4:
I remember seeing something about how Korean stuff is unique, but I haven't gotten a chance to really study it.
That and the BIOS stuff I will sort out at some point. They aren't high priority but I'll keep it on my todo list.
2:
Man, this one was tough to track down. Subtly wrong savestate bugs like this are always a headache. It's fixed now though, make sure to clear out your greenzones after getting the dev build.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I found the problem. I allocated 4 bytes for four int sized values 8D
The goal for this emulator is accuracy, so yeah if / when I get around to CGB I'll be trying for enough accuracy so runs will sync on hardware. I'd want to get accurate enough so MrWint's pokemon ACE runs on real hardware honestly.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I have restored the operation of the GPU Viewer for GBHawk, Gambatte, and Sameboy, which seems to have gotten broken somewhere around 2.0.
There's some kind of memory leak in it though. I haven't found a 100% consistent way to replicate it but it crashes with a corrupted heap error sometimes after switching between cores, so, that's bad.
If I can get that sorted out this will be another helpful tool in diagnosing the remaining graphical glitches. Anyone have any tips on how to track down memory management errors?
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
The audio and frame difference issues are due to gambatte using 'use equal length frames' by default.
The Gameboy can have 'frames' (time bewteen VBLanks) that are arbitrarily long since it's not locked to a video standard like normal consoles. When these types of frames happen, typically during loading, BizHawk doesn't know how much longer a frame was then a normal frame, so it just plays the audio like it was 1 normal frame, cutting off notes and speeding things up.
Typically for TASing though you want frames that always start / end on VBlank since that leads to consistent input timing.
So, it's a trade off. Right now GBHawk only has VBlank based frames for ease of testing, so those issues won't be immediately fixed. It kind of sucks, but BizHawk doesn't have a good way to deal with it that I know of.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Ok, I finally found the Fix for Roger Rabbit. That game uses every available cycle for drawing and didn't leave enough time to restore access to VRAM.
Anyway, with that here is the list of issues I am currently aware of. Let me know if I need to add anything:
- Link's Awakening title effect
- Super Hunchback title effect
- Altered Space excess sprites
- Beast Fighter, no status bar (it expects window tile location to be at the bottom of the screen even though it wasn't turned on, not sure if it even works on hardware.)
Tests failed:
- hblank_ly_scx_timing-GS
- intr_2_mode0_timing_sprites
I think that's it. Making a lot of progress. Now the hard part starts figuring out those last 2 tests. (I also fail the OAM bug test, but since I don't know the corruption pattern I can't really implement it, the tests only do a checksum. Needs hardware testing.)
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Tastyfish has implmented the keyboard. So, this and several other games needing the keyboard can now be played.
Tastyfish has also implemented several other features for the SMS/GG core recently including lightgun for anyone who might be interested in trying these out.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Fixed, thanks for the report. (Although I was certain I remembered accounting for this already. Maybe I only thought about doing it but never did it?) 0_0
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
- The core picker is in Config->Cores only at the moment
- I dont even know where to look for the gamepad config 8D
- For now it's GB only. When GB is close to 100% maybe I'll upgrade to GBC. A lot of the trickier stuff still remains to be done.
I just implemented MBC3, so Pokemon Red and Blue should now be playable.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Thanks for the continued (and detailed) testing.
Yeah many of the remaining bugs are ppu timing glitches. I'll have to look at Samurai showdown though.
Actually I was bored of staring at trace logs so I decided to implement the first unlicensed mapper, Sachen MMC2 (as defined by tauwasser): https://web.archive.org/web/20170803195356/https://wiki.tauwasser.eu/view/Sachen_Mappers
This makes Beast Fighter work (although the status bar is broken at the moment.)
So, I'll be implementing unlicensed stuff as I have the motivation and can find info about the mapper.
If anyone has a specific unlicensed game they want implemented (I know there were a few in the first page) it would greatly speed up implementation if you could link to a mapper spec.
EDIT:
Fixed:
Lawnmower Man
Samurai Showdown
Th Final Fantasy legend
EDIT2:
Fixed: Audio squeel, zerd no densetsu, X (proto), GOAL!
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
Lot's of new fixes just committed.
Fixed: Malibu Beach Volleyball, Castle Quest, Double Dragon 3, F1 pole poisition.
Working on: Goal!, Roger Rabbit, The Final Fantasy Legend
As usual, games are using all kinds of different tricks to do things, so I'm getting a lot of good test cases out of all of this.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I committed another round of updates that fixes Wario Blast as well as Bomberman and mortal kombat.
Malibu Beach Volleyball looks interesting, thanks for pointing that out, might provide a hint for Roger Rabbit as well.
Link's awakening is probably a PPU timing bug that will have to wait all the basics are done and I can focus on the minute details.
Editor, Experienced Forum User, Published Author, Expert player
(3536)
Joined: 11/30/2014
Posts: 2733
Location: US
I guess they don't like emulators! The game expects to be unable to read RAM during DMA. I had the rough outlines of this implemented, but now it's implemented completely so the game runs.
I'll think about adding that option later once most of the main GB bugs are stomped out.
I thought I took that out, but listening to it again I do still hear a faint high pitched buzz. I'll look into it.